“对于我是真的,错误的:”Python,需要解释

时间:2014-10-27 18:05:54

标签: python loops for-loop

我希望我可以在这里要求解释,而不只是问题的解决方案。

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

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?

我锄头有人可以为我澄清一下。谢谢!

4 个答案:

答案 0 :(得分:6)

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

至于它是以布尔值还是整数运行,这取决于你如何使用ibool是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

您将以这种方式获得完全相同的结果,您只是循环遍历列表而不是元组。