有人可以解释这个 python 代码是如何工作的吗?

Could someone explain how this python code works?

这几天一直在想一段代码,看不懂。 我担心这真的很简单,但仍然......我必须知道它是如何工作的,这让我很困扰。提前致谢。

a = [1,1,2,3,5,8]
for a[1] in a:
 pass
print(a)

这段代码的输出是:

[1,8,2,3,5,8]

这是怎么发生的?

您正在迭代更新a[1]
由于最后一个值是8,所以a[1]终究变成了8。

正如 Kota Mori 所说,您正在递归更新它,但这可能很难找到直觉,它也有助于打印值。看看这个修改后的代码:

a = [1,1,2,3,5,8]
for a[2] in a:
    print(a[2])
    pass
print(a)

那将打印

1
1
1
3
5
8
[1, 1, 8, 3, 5, 8]

所以您可以看到,即使在开始时,它的值也是 1 而不是 2。那是因为这是您在迭代时获得的第一个值。本质上它设置 a[2] = a[0].

当它完成循环时,a[2] 被设置为最后一个值“8”,这就是它为您提供结果的原因。

循环实际上等同于:

for x in a:
    a[1] = x

所以每次循环,它都会将 a[1] 设置为列表的当前元素。最后,它包含列表的最后一个元素。