python - 遍历列表在 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(我从不想要那样)。有人可以向我解释为什么吗?
解决方案
第一个循环liste_bis
在每次迭代时分配一个新值。所以在每次迭代开始时liste_bis
总是相同的。
liste_bis = liste.deepcopy()
会更好用。liste.deepcopy()
将列表的内容复制到变量中并使它们独立。
所以如果你写
liste_bis = liste.deepcopy()
每一次改变list_bis
都不会改变liste
。
在第二个循环中,就像您为liste
. 无论liste
现在是什么也是liste_bis
。每次更改都liste_bis
将继续进行,liste
反之亦然。
推荐阅读
- java - 为什么单线程程序不会出现liveness failure?
- c# - 如何获取文本内容geckofx c#
- java - 异常:java.lang.ClassNotFoundException:org.apache.commons.dbcp.BasicDataSource
- javascript - 是否有通过使用承诺来避免堆栈溢出的一般技术?
- android - 在 oreo 和更新版本的后台从服务启动应用程序
- python - python - 从 microsoft word 中提取文本
- python - 如何先按键排序字典,然后按元组值排序
- google-cloud-firestore - 有没有其他方法可以在 Angular 8 中编写更新操作
- java - Java int 不能转换为 Double
- spring-boot - 获取端点的授权令牌