我正在运行这个Python代码:
numbers = [1, 2, 3]
letters = ['a', 'b', 'c']
for numbers in numbers:
print(numbers)
for letters in letters:
print(letters)
得到了这个输出:
1
a
b
c
2
c
3
c
我不明白为什么我得到这个输出。我要问的是在序列(列表)中使用具有相同名称的迭代变量会产生什么影响?
答案 0 :(得分:4)
因为for letters in letters:
初始化了名称letters
(字符串的list
)的迭代。即使重新分配letter
变量,原始列表也已存储在for
迭代器中,因此循环正常运行
在第一次迭代之后,名称letters
不再引用您的开始列表,而是引用原始列表的最后一个元素,即AKA c
。由于字符串是 iterable ,因此您不会收到错误(例如,如果letters
是一个整数列表就会得到),它只会产生c
结束。
请注意for letters in letters
本身没有任何意义。字母列表正确命名为letters
,但变量名称应命名为letter
,否则会导致代码不清楚。