a = [0, 1, 2, 3]
for a[-1] in a:
print(a[-1])
我是python的新手,所以任何人都可以解释这段代码的输出。
输出
0 1 2 2
a[-1]
表示最后一个元素3
,因此输出不应为3 3 3 3
?
答案 0 :(得分:2)
当发生每个元素的变量时,会发生一个[-1]。 因此对于a中的[-1]:迭代a中的每个元素并将值存储在[-1]中,即[3]
由于存储在[3]中的最后一个值是a [2],即2 ...输出为0,1,2,2 希望现在很清楚。
答案 1 :(得分:0)
此代码相当于以下内容: a = [0,1,2,3]
for x in a:
a[-1] = x
print(a[-1])
所以[-1]正在改变
答案 2 :(得分:0)
此代码应有助于澄清:
a = [0, 1, 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]
所以发生的事情就是每次经过循环时,在迭代器(a
)开始时迭代列表类型,这会将列表的下一个项目以你的名字带入内存声明(a[-1]
)。因为你正在改变你正在迭代的同样的事情,你会得到意想不到的结果。关注最后两个输出,您可以看到您将2
写入a[-1]
然后进行迭代,以便您查看a[4]
(这也是a[-1]
case)但是这只是重写为2
,因此你的输出。
你可能想要的是:
a = [0, 1, 2, 3]
for foo in a:
print(foo)