我为什么得到这个输出

问题描述 投票:0回答:2

在上述代码中,我希望输出为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

python list loops
2个回答
3
投票

在这种情况下,您正在迭代列表时重新分配了列表中的值。如果在循环中打印出整个列表,则会看到以下内容:

>>> 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
投票

您正在做什么:

>>> for i in a:
...     a[-1] = i
...     print(a[-1])
... 
0
1
2
2

这是因为在每个循环中,在某种意义上为a [-1]分配了next(可迭代a)的值。for循环使其可迭代,然后对该可迭代对象进行下一个调用,然后将其分配给迭代变量。

© www.soinside.com 2019 - 2024. All rights reserved.