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
你能解释一下为什么吗?我们希望你能试一下。我试着想出一个排练,但我根本不理解输出。
7bsow1i61#
我试着用一个例子来解释它。假设这个片段:
for i in a: ...
在这段代码中,在每次迭代中,i都将是a的一个元素。x一米一纳米一x x一米二纳米一x ...现在,当你有了这个代码:
i
for a[-1] in a: ...
这就像你在每次迭代中都这样做:a[-1] = a[0],a[-1] = a[1],a[-1] = a[2]和...所以你每次都改变最后一个元素,当你的迭代结束时,你的最后一个元素将是3。
a[-1] = a[0]
a[-1] = a[1]
a[-1] = a[2]
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
您可以看到,在每个循环中,该列表的最后一项都更新为1、2、3(注:list[-1]在python中表示list的最后一项),当你最后一次循环它时,值不再是4,而是3。
1
2
3
4
2条答案
按热度按时间7bsow1i61#
我试着用一个例子来解释它。
假设这个片段:
在这段代码中,在每次迭代中,
i
都将是a的一个元素。x一米一纳米一x x一米二纳米一x ...现在,当你有了这个代码:
这就像你在每次迭代中都这样做:
a[-1] = a[0]
,a[-1] = a[1]
,a[-1] = a[2]
和...所以你每次都改变最后一个元素,当你的迭代结束时,你的最后一个元素将是3。
6rqinv9w2#
将代码更改为下一个,您可以清楚地理解它:
执行日期:
您可以看到,在每个循环中,该列表的最后一项都更新为
1
、2
、3
(注:list[-1]在python中表示list的最后一项),当你最后一次循环它时,值不再是4
,而是3
。