Python 执行for循环后列表值的更改
我有一张a的单子。执行以下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=[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.先生,我知道如何打印所有值。。但是我想知道为什么我的代码表现得异常。。明白了