<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
也有效。
让我从 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
也有效。