在上述代码中,我希望输出为0 1 2 3
,但输出为0 1 2 2
。请帮我为什么? ,它是如何工作的。这是我的问题陈述的代码。
a = [0, 1, 2, 3]
for a[-1] in a:
print(a[-1])
这是python中的代码,输出为0 1 2 2
答案 0 :(得分:4)
在这种情况下,您将在迭代列表的同时重新分配列表中的值。如果您在循环中打印出整个列表,则会看到以下内容:
>>> for a[-1] in a:
... print(a)
...
[0, 1, 2, 0]
[0, 1, 2, 1]
[0, 1, 2, 2]
[0, 1, 2, 2]
如果要遍历列表中的各个项目,则必须以其他方式命名变量,例如:
for item in a:
print(item)
然后输出便是您期望的0 1 2 3
。
答案 1 :(得分:1)
您正在做什么:
>>> for i in a:
... a[-1] = i
... print(a[-1])
...
0
1
2
2
这是因为在每个循环中a [-1]在某种意义上被分配了next(可迭代a)的值。
for
循环使其可迭代,然后对该可迭代对象进行下一个调用,然后将其分配给迭代变量。