从嵌套列表副本删除元素导致原列表同步修改,如何解决?
解决嵌套列表拷贝后同步修改的问题
问题出在brothers.copy()是浅拷贝——它只复制了外层列表的容器,里面的每个子列表还是和原列表brothers共用同一个内存引用。所以你修改temp[0]里的元素时,本质上是在修改原列表里的那个子列表对象,自然会影响到brothers。
要让temp完全独立,有两种简单的修改方式:
方式一:使用深拷贝
借助copy模块的deepcopy方法,它会递归复制所有嵌套的子对象,生成一个完全独立的新列表:
import copy temp = copy.deepcopy(brothers) temp[0].remove(temp[0][0])
方式二:手动复制每个子列表
因为你的子列表都是一维的,直接遍历原列表,逐个复制子列表即可:
# 用子列表的copy方法 temp = [sublist.copy() for sublist in brothers] # 或者用切片语法,效果一样 # temp = [sublist[:] for sublist in brothers] temp[0].remove(temp[0][0])
这两种方法都能保证修改temp时,原列表brothers不会受到任何影响。
内容的提问来源于stack exchange,提问作者b0b75
相关产品推荐
相关产品推荐

