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

Jar*_*ett 5 python iteration iterator loops 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
Run Code Online (Sandbox Code Playgroud)

Kon*_*ert 9

在您的代码中,您使用该enumerate()功能.您可以想象它执行以下操作:

>>> print enumerate("a","b","c")
>>> [(0,"a"),(1,"b"),(2,"c")]
Run Code Online (Sandbox Code Playgroud)

(这不完全正确,但足够接近.)

enumerate()将元素列表转换为元组列表*,其中每个元组由元素索引和元素组成.元组类似于列表.

*实际上它返回一个迭代器,而不是一个列表,但这不应该打扰你太多.

但两个迭代变量如何工作?

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

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

simple_list = [1,2,3,4]
for x in simple_list:
    print x
Run Code Online (Sandbox Code Playgroud)

但是我们也可以遍历整数元组列表中的每个元素:

tuple_list = [(1,5),(2,6),(3,7),(4,8)]
for x, y in tuple_list:
    print x, y
    print x+y
Run Code Online (Sandbox Code Playgroud)

这里,列表的每个元素都是两个整数的元组.当我们编写时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
Run Code Online (Sandbox Code Playgroud)

所有这一切都有效.或者应该工作(没有运行代码).

而且当然,

tuple_list = [(1,5),(2,6),(3,7),(4,8)]
for tuple in tuple_list:
    print tuple
Run Code Online (Sandbox Code Playgroud)

也有效.