Python For 循环(迭代变量名称 = 列表名称)

Akh*_*aki 1 python for-loop list

我正在运行这个 Python 代码:

numbers = [1, 2, 3]
letters = ['a', 'b', 'c']

for numbers in numbers:
    print(numbers)
    for letters in letters:
       print(letters)
Run Code Online (Sandbox Code Playgroud)

并得到这个输出:

1
a
b
c
2
c
3
c
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我得到这个输出。我要问的是使用具有相同名称的迭代变量与序列(列表)的效果是什么?

Jea*_*bre 5

  • 为什么它第一次起作用?

因为for letters in letters:初始化名称的迭代letters(这是一个list字符串)。即使letter变量被重新赋值,原始列表已经存储在for迭代器中,所以循环运行正常

  • 为什么它不工作/下一次工作如此奇怪?

第一次迭代后,名称letters不再引用您的开始列表,而是引用原始列表的最后一个元素 AKA c。由于字符串是可迭代的,因此您不会收到错误(例如,如果letters是整数列表,您会得到的那样),它只会c一遍又一遍地产生。

请注意,这for letters in letters本身没有任何意义。字母列表被正确命名letters,但变量名应该被命名letter,例如,否则会使代码不清楚。