Negative index in python for loop

nil*_*rty 1 python

我在谷歌搜索时发现了这个问题,但不明白它是怎么发生的?

a = [0, 1, 2, 3]

for a[-1] in a: 
    print(a[-1])
Run Code Online (Sandbox Code Playgroud)

结果:

0 1 2 2

现在,如果我再次打印:

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

另一个类似的例子:

让 a 成为原始列表,即 [0,1,2,3]

现在,让我们运行另一个 for 循环,但像这样:

for a[0] in a:
    print(a[0])
Run Code Online (Sandbox Code Playgroud)

这次的结果是:

0 1 2 3

但再次打印:

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

所以,我有两个问题:

1) 在这两种情况下,原始列表是如何更新的?

2)第一种情况下的结果的解释是什么,即循环的负索引?

hir*_*ist 5

注意:a[-1]指的是列表的最后一个元素。

a[index]在每次循环迭代中分配给

for a[index] in a:
Run Code Online (Sandbox Code Playgroud)

a[index]将在循环期间分配值a[0], a[1], ...,a[-1]并最终分配给

a[index] = a[-1]
Run Code Online (Sandbox Code Playgroud)

通常你尽量不要弄乱你正在迭代的列表:

for item in a:
    # do something with item
Run Code Online (Sandbox Code Playgroud)