在 Python For 循环中重用迭代器变量

Reusing Iterator Variables in Python For Loops

在 Python v2.7.3 中,我可以像这样重复使用迭代器变量吗?

for i, name in enumerate(listOfNames):
   ...

然后再做:

for i, address in enumerate (addressList):
   ...

什么迭代器变量?你没有重复使用任何东西。您正在调用 enumerate 两次,因此它将产生两个单独的生成器。

如果你做了这样的事情,你唯一会惹上麻烦的方法就是

>>> listOfNames = ['bob', 'mike', 'steve']
>>> e = enumerate(listOfNames)

>>> for i, name in e:
        print(i)

0
1
2

>>> for i, name in e:
        print(i)

# prints nothing

请注意,我们将 enumerate 调用的 return 值分配给变量 e。如果您尝试对该变量进行两次迭代,第二次将一无所获。在你的情况下,你不会运行进入这个问题

*>对于 i,枚举中的名称(listOfNames): ...

for i, address in enumerate (listofAddress): ...

好的,关于你的情况,我想说的是,这是两个不同的 for 循环与两个不同的迭代器结合使用 enumerate() 方法。它们实际上并没有相互组合。

这是您的案例 运行 在我的电脑上的具体示例和屏幕截图:

如果您可以从 url 中查看此内容,请: https://i.stack.imgur.com/6U1CJ.png

从截图中可以看出,对于这两种情况: 第一个产生列表名称及其索引的是 [i], 第二个尝试做与名为 listofAddress 的列表中相同的事情,并最终生成索引及其地址值。

所以你可以看到,即使对于名为 i 的“同名”变量,这也是来自两个列表的两个完全不同的结果;

但实际上它们是不同的,因为它们都是代表值在各自特定Lists中的索引,一个是[listofNames]的索引,一个是[listofAddress]的索引],所以他们是不同的,对吧?