Python:给定代码的输出

时间:2017-06-27 03:09:42

标签: python

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

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)