Python for 循环直觉

Hus*_*ain 1 python for-loop list

我正在使用 python 中的 for 循环迭代列表。我无法了解这种情况下发生的情况。

a=[0,1,2,3]
for a[-1] in a:
   print(a)
Run Code Online (Sandbox Code Playgroud)

输出->

[0, 1, 2, 0]
[0, 1, 2, 1]
[0, 1, 2, 2]
[0, 1, 2, 2]
Run Code Online (Sandbox Code Playgroud)

Kin*_*Dev 7

在此 for 循环中,您将a[-1]列表中的最后一项设置a为当前迭代的对象。

一步一步走下去,结果就一目了然了。

a = [0, 1, 2, 3]

第一次迭代
当前迭代:0
将最后一个对象设置为ato 0,意思是:
a = [ 0 , 1, 2, 0 ]

第二次迭代
当前迭代:1
将最后一个对象设置为ato 1,意思是:
a = [0, 1 , 2, 1 ]

第三次迭代
当前迭代:2
将最后一个对象设置为ato 2,意思是:
a = [0, 1, 2 , 2 ]

第四次迭代
在第四次迭代中,您只需将 a 中的最后一项设置为自身,这意味着没有任何变化。这解释了为什么你得到了你所做的输出。

  • 作为进一步的上下文,此分配的工作原理是列表是可变的;或者更具体地说,接受元素分配。这不适用于不可变类型,例如字符串或元组。 (2认同)