我希望我能在这里要求解释,而不仅仅是解决问题的方法。
所以我知道这是如何工作的:
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
这样你会得到完全相同的结果,你只是循环浏览一个列表而不是一个元组。