首页 > 解决方案 > 遍历列表在 Python 中的行为如何?

问题描述

liste=['a','b','c']
for x in liste :              
       liste_bis=['a','b','c']       
       liste_bis.remove(x)
       print(liste_bis)
       print(liste)

print(" ")

for x in liste :              
       liste_bis=liste    
       liste_bis.remove(x)
       print(liste_bis)
       print(liste)

我真的不明白这些循环之间有什么区别。第一个不会更改 liste(仅 liste_bis),而第二个会更改 liste(我从不想要那样)。有人可以向我解释为什么吗?

标签: python

解决方案


第一个循环liste_bis在每次迭代时分配一个新值。所以在每次迭代开始时liste_bis总是相同的。

liste_bis = liste.deepcopy()会更好用。liste.deepcopy()将列表的内容复制到变量中并使它们独立。

所以如果你写

liste_bis = liste.deepcopy()

每一次改变list_bis都不会改变liste

在第二个循环中,就像您为liste. 无论liste现在是什么也是liste_bis。每次更改都liste_bis将继续进行,liste反之亦然。


推荐阅读