在上述代码中,我希望输出为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
在这种情况下,您正在迭代列表时重新分配了列表中的值。如果在循环中打印出整个列表,则会看到以下内容:
>>> 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
。
您正在做什么:
>>> for i in a:
... a[-1] = i
... print(a[-1])
...
0
1
2
2
这是因为在每个循环中,在某种意义上为a [-1]分配了next(可迭代a)的值。for
循环使其可迭代,然后对该可迭代对象进行下一个调用,然后将其分配给迭代变量。