下面是一段代码,它给出了输出:0 1 2 2
。我期望输出 3 3 3 3
因为 a[-1]
访问列表中的数字 3。网上给出的解释说“a[-1]
的值在每次迭代中都会发生变化”,但我不太明白如何或为什么。任何解释都会很棒!
a = [0, 1, 2, 3]
for a[-1] in a:
print(a[-1])
最佳答案
在执行 for a[-1] in a
时,实际上是遍历列表并将当前元素的值临时存储到 a[-1]
中。
您可以按照以下说明查看循环:
a[-1] = a[0] # a = [0, 1, 2, 0]
print(a[-1]) # 0
a[-1] = a[1] # a = [0, 1, 2, 1]
print(a[-1]) # 1
a[-1] = a[2] # a = [0, 1, 2, 2]
print(a[-1]) # 2
a[-1] = a[3] # a = [0, 1, 2, 2]
print(a[-1]) # 2
所以,当你在第三个元素上时,那么 2
被存储到 a[-1]
(其值为 1
,但之前是 0
和开始时是 3
)。
最后,当谈到最后一个元素(以及迭代结束)时,存储在 a[-1]
中的最后一个值是 2
这解释了原因它被打印了两次。
关于python - for 循环和遍历列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34695538/