Python 执行for循环后列表值的更改

Python 执行for循环后列表值的更改,python,python-3.x,Python,Python 3.x,我有一张a的单子。执行以下for循环后,列表值将更改 a=[1,2,3] for a[0] in a: print(a[0]) print(a) #it prints [3, 2, 3] 我认为您希望显示所有的值​​在你的名单上。 如果您想这样做,我建议您像这样使用enumerate a=[1,2,4] for index, value in enumerate(a): print(value) print(a) 因此列表中的值不会更改。以下是代码在单个命令中分解

我有一张a的单子。执行以下for循环后,列表值将更改

a=[1,2,3]
for a[0] in a:
    print(a[0])


print(a) #it prints [3, 2, 3]

我认为您希望显示所有的值​​在你的名单上。 如果您想这样做,我建议您像这样使用
enumerate

a=[1,2,4]
for index, value in enumerate(a):
        print(value)
print(a)

因此列表中的值不会更改。

以下是代码在单个命令中分解的内容。也许这样你可以更好地理解发生了什么:

a = [1,2,3] 
# for loop begins
a[0] = a[0]    # a is now [1,2,3]
print(a[0])    # prints 1
a[0] = a[1]    # a is now [2,2,3]
print(a[0])    # prints 2
a[0] = a[2]    # a is now [3,2,3]
print(a[0])    # prints 3
# for loop ends
print(a)       # prints [3,2,3]
简言之:永远不要使用列表的元素作为循环变量来迭代该列表。除了非常特殊的情况外,它没有任何意义。

当你写作时

for i in [1,2,3]:
    print i
每次迭代i=1,然后是2,然后是3。所以如果你执行这个代码

a=[1,2,3]
for a[0] in a:
    print a[0]
    print a
输出:

1
[1, 2, 3]
2
[2, 2, 3]
3
[3, 2, 3]

您可以清楚地看到,[0]先是1,然后是2,最后是3,所以“a”最终变成了[1,2,3]。

在上面显示的脚本中,当我执行for循环时,我得到了正常的列表值,但在for循环执行后,我的列表不知怎的发生了变化。您的循环变量是列表的第一个值。。。所以这将被设置为1,2,最后是3。这就是它的结局。但为什么原来的列表被修改了。当我将[0]更改为[1]时,在for循环内部打印得到1,然后在循环内部将list修改为[1,3,3],则打印[0],如果将[1]作为循环变量,则每次打印[0]时都不会再更改。因此它将打印1.先生,我知道如何打印所有值。。但是我想知道为什么我的代码表现得异常。。明白了