无法为给定的for循环找到原因(Python 3.11)

b5lpy0ml  于 2023-01-10  发布在  Python
关注(0)|答案(2)|浏览(99)
a=[1,2,3,4]
s=0

for a[-1] in a:
    print(a[-1])
    s+=a[-1]
print('sum=',s)

以上代码的输出为

1
2
3
3
sum= 9

你能解释一下为什么吗?我们希望你能试一下。
我试着想出一个排练,但我根本不理解输出。

7bsow1i6

7bsow1i61#

我试着用一个例子来解释它。
假设这个片段:

for i in a:
    ...

在这段代码中,在每次迭代中,i都将是a的一个元素。x一米一纳米一x x一米二纳米一x ...
现在,当你有了这个代码:

for a[-1] in a:
    ...

这就像你在每次迭代中都这样做:a[-1] = a[0]a[-1] = a[1]a[-1] = a[2]和...
所以你每次都改变最后一个元素,当你的迭代结束时,你的最后一个元素将是3。

6rqinv9w

6rqinv9w2#

将代码更改为下一个,您可以清楚地理解它:

a=[1,2,3,4]
s=0

for a[-1] in a:
    print(a[-1])
    print(a)
    s+=a[-1]
print('sum=',s)

执行日期:

1
[1, 2, 3, 1]
2
[1, 2, 3, 2]
3
[1, 2, 3, 3]
3
[1, 2, 3, 3]
sum= 9

您可以看到,在每个循环中,该列表的最后一项都更新为123(注:list[-1]在python中表示list的最后一项),当你最后一次循环它时,值不再是4,而是3

相关问题