"for i in True,False:" Python,需要解释



我希望我能在这里要求解释,而不仅仅是解决问题的方法。

所以我知道这是如何工作的:

for i in range(10):
 //blocks of code

它从 i = 0 一直到 i = 9,因此代码块执行 10 次。我的问题是这有什么作用:

for i in True,False:
 //block of code

这只运行一次吗?还是两次?还是代码块使用 i 作为真/假或 1/0 ?

我锄有人可以为我澄清这一点。谢谢!

True,False是一个元组,相当于(True, False)。该元组的长度为 2,因此代码块运行两次。

至于它是作为布尔值还是整数运行,这取决于你如何使用i . bool是 Python 中 int 的一个子类,所以它通常充当布尔值,但你可以用它进行数学运算,因为它基本上只是整数的另一种表示形式。

在 Python 中,for 关键字实际上是 "foreach"。 它会迭代您提供给它的对象。

range()返回一个列表(在 Python 2.x 中(,因此for i in range(3):遍历列表中的整数。 在 Python 3.x 中,range() 返回一个迭代器,因此for i in range(3):迭代迭代器生成的整数。 无论哪种方式,i都设置为范围内的整数,一次一个。

Python 有元组,通常这样写:(True, False)

这是一个包含两个元素的元组。 第一个是True,第二个是False

但是在Python中,元组实际上并不需要括号;用逗号分隔的一系列值也是一个元组。 因此,这是一个等效于第一个元组:True, False

在 Python 中制作长度为 1 的元组很棘手。 您仍然需要逗号,因此看起来很奇怪。 下面是一个长度为 1 的元组:0,

这看起来很奇怪,但它是合法的:一个将只运行一次的循环,因为我们将一个长度为 1 的元组传递给 for

for i in 0,:
    print i

这将打印0并终止。

for ... in ...循环基本上循环遍历所谓的可迭代对象中的每个元素。可迭代对象包括列表、字典、元组等。 range(x)返回列表[0,1,2,3,...,(x-1)],例如,因此

for i in range(10):
 //blocks of code

真的是一回事

for i in [0,1,2,3,4,5,6,7,8,9]:
 //blocks of code

因此,您可以想到

for i in True,False:
 //block of code

被解释为

for i in [True,False]:
 //block of code

简短的回答:它运行两次。 第一次,i==True,第二次,i==False

您需要知道for循环是如何工作的,以及这有意义的tuple是什么。 A for 循环只是...井。。。循环遍历可迭代对象。 您可以通过几种不同的方式重写内容:

# The parentheses here don't do anything different from what you had, actually.
# But it makes it more clear that you're making a tuple and iterating over it.
for i in (True, False):
    // block of code

等效地,您可以遍历列表:

for i in [True, False]:
    // block of code

这样你会得到完全相同的结果,你只是循环浏览一个列表而不是一个元组。

最新更新