修改原始列表时,如何使对象列表的副本不变? [英] How to make a copy of a list of objects not change when modifying the original list?
本文介绍了修改原始列表时,如何使对象列表的副本不变?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Possible Duplicates:
How to clone a list in python?
What is the best way to copy a list in Python?
original_list = [Object1(), Object2(), Object3()]
copy_list = original_list
original_list.pop()
如果我从原始列表中删除了一个对象,该如何保持副本列表也保持不变?
If I remove an object from the original list, how can I keep the copy list from changing as well?
原始列表
[<Object.Object instance at 0x00EA29E0>, <Object.Object instance at 0x00EA2DC8>, <Object.Object instance at 0x00EA2EE0>]
弹出原始列表后复制列表(我希望它等于上面的内容)
Copy List after popping the original list (I want this to equal what is above)
[<Object.Object instance at 0x00EA29E0>, <Object.Object instance at 0x00EA2DC8>]
推荐答案
使用复制.deepcopy()获取深层副本:
import copy
copy_list = copy.deepcopy(original_list)
对于浅表副本,请使用 copy.copy():
For a shallow copy use copy.copy():
import copy
copy_list = copy.copy(original_list)
或未指定端点的切片:
copy_list = original_list[:]
请参阅复制文档,以获取有关Deep&浅层副本.
See the copy docs for an explanation about deep & shallow copies.
这篇关于修改原始列表时,如何使对象列表的副本不变?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文