我希望我可以在这里要求解释,而不只是问题的解决方案。
所以我知道这是如何运作的:
for i in range(10):
//blocks of code
从i = 0一直到i = 9,因此代码块执行10次。我的问题是这是做什么的:
for i in True,False:
//block of code
这只运行一次吗?还是两次?或者代码块是否使用i作为True / False或1/0?
我锄头有人可以为我澄清一下。谢谢!
答案 0 :(得分:6)
True,False
是一个元组,相当于(True, False)
。该元组的长度为2,因此代码块会运行两次。
至于它是以布尔值还是整数运行,这取决于你如何使用i
。 bool
是Python中int
的子类,因此它通常用作布尔值,但您可以使用它进行数学运算,因为它基本上只是整数的另一种表示。
答案 1 :(得分:5)
在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
并终止。
答案 2 :(得分:2)
for ... in ...
循环基本上循环遍历所谓的可迭代对象中的每个元素。可迭代对象包括列表,dicts,元组等。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
答案 3 :(得分:1)
简短回答:它运行了两次。第一次是i==True
,第二次是i==False
。
您需要知道for
循环如何工作以及tuple
对此有何意义。一个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
您将以这种方式获得完全相同的结果,您只是循环遍历列表而不是元组。