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

时间:2018-01-10 18:12:59

标签: python list for-loop

我正在运行这个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

我不明白为什么我得到这个输出。我要问的是在序列(列表)中使用具有相同名称的迭代变量会产生什么影响?

1 个答案:

答案 0 :(得分:4)

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

因为for letters in letters:初始化了名称letters(字符串的list)的迭代。即使重新分配letter变量,原始列表也已存储在for迭代器中,因此循环正常运行

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

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

请注意for letters in letters本身没有任何意义。字母列表正确命名为letters,但变量名称应命名为letter,否则会导致代码不清楚。