让我开始使用通用的我是Python的初学者。 嗨,我是Python的初学者,所以请尽量与简单的英语保持一致:)
我继续遇到这些for循环,其中for循环中有两个迭代变量。这对我来说非常困惑,因为我只是围绕着for循环的基本概念。那就是你的迭代变量一次一行地通过for循环运行(在大多数情况下)。那么两个迭代变量的作用是什么呢?我有一些猜测,但我想要正确的答案,把我的想法放在正确的方向。
有人会输入for循环的读取方式(用口语来说)并解释究竟发生了什么。
>>> elements = ('foo', 'bar', 'baz')
>>> for elem in elements:
... print elem
...
foo
bar
baz
>>> for count, elem in enumerate(elements):
... print count, elem
...
0 foo
1 bar
2 baz
答案 0 :(得分:9)
在您的代码中,您使用enumerate()
函数。您可以想象它会执行以下操作:
>>> print enumerate("a","b","c")
>>> [(0,"a"),(1,"b"),(2,"c")]
(这不完全正确,但它足够接近。)
enumerate()
将元素列表转换为元组列表*,其中每个元组由元素索引和元素组成。元组类似于列表。
*实际上它返回一个迭代器,而不是一个列表,但这不应该让你感到烦恼。
但两个迭代变量如何工作?
让我用几个例子来说明这一点。
在第一个例子中,我们迭代整数列表中的每个元素。
simple_list = [1,2,3,4]
for x in simple_list:
print x
但是我们也可以迭代整数元组列表中的每个元素:
tuple_list = [(1,5),(2,6),(3,7),(4,8)]
for x, y in tuple_list:
print x, y
print x+y
这里,列表的每个元素都是两个整数的元组。当我们写for tup in tuple_list
时,每次迭代都会填充tup
,并且列表中有一个整数元组。
现在,因为Python非常棒,我们可以"赶上"通过编写(x,y)
(或x,y
(相同)代替tup
,将两个整数的元组转换为两个不同的整数变量
这有意义吗?
类似地,我们可以迭代3元组:
tuple_list = [(1,5,10),(2,6,11),(3,7,12),(4,8,69)]
for x, y, z in tuple_list:
print x, y, z
print x+y-z
所有这一切都有效。或者应该工作(避免运行代码)。
当然,
tuple_list = [(1,5),(2,6),(3,7),(4,8)]
for tuple in tuple_list:
print tuple
也有效。