<Python> for 循环中的两个迭代变量

<Python> Two iterating variables in a for loop

让我从 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

在您的代码中,您使用了 enumerate() 函数。你可以想象它做了以下事情:

>>> print enumerate("a","b","c")
>>> [(0,"a"),(1,"b"),(2,"c")]

(这不完全正确,但已经足够接近了。)

enumerate() 将元素列表变成元组列表*,其中每个元组由元素的索引和元素组成。元组类似于列表。

*事实上它 returns 是一个迭代器,而不是一个列表,但这不应该让你太在意。

但是这两个迭代变量是如何工作的呢?

让我用几个例子来说明这一点。

在第一个示例中,我们遍历整数列表中的每个元素。

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 很棒,我们可以 "catch" 将两个整数的元组写成 (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

也有效。