Python for循环奇怪的bug

Kid*_*der 5 python for-loop

因此,在测验中,我提出了执行该代码块会产生什么结果的问题(下图)。

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

我选择了错误,但令我惊讶的是,它实际上有效并且能够打印列表中的所有元素。但如何呢?
首先,获取变量的元素(通常是 i)正在隐藏实际变量,除此之外我们正在获取数字内的第一个元素,那么它是如何工作的。

小智 -2

a[0] 是 a 的类型,因此它可用于迭代数组,但正如您在 a[0] 中分配值一样,它的值将更改为数组的最后一个元素。

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

将导致:

0
1
2
3
Run Code Online (Sandbox Code Playgroud)

但现在打印 a 将为您提供修改后的数组:

print(a)
[3, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)