我创建了一个列表副本。 从一个副本中删除一项后,它也会从原始副本中删除。
a = ['alpha', 'beta', 'gamma', 'delta']
b = a
b.remove('alpha')
print 'A list is', a
print 'B list is', b
我应该如何创建列表的独立副本,而不会影响原始副本?
要了解此错误的原因,请参考浅拷贝和深拷贝Python documentation - 8.17. copy
浅复制和深复制之间的区别仅与复合对象(包含其他对象的对象,如列表或类实例)有关:
- 浅表副本会构造一个新的复合对象,然后(在可能的范围内)将对原始对象中引用的对象的引用插入其中。
- 深层副本会构造一个新的复合对象,然后递归地将原始对象中的对象的副本插入其中。
答案 0 :(得分:1)
您可以使用内置的复制模块。
import copy
a = ['alpha', 'beta', 'gamma', 'delta']
# it will perform the shallow copy
b = copy.copy(a)
b.remove('alpha')
print 'A list is', a
print 'B list is', b
对于Python3.x。虽然, copy 模块在Python3.x中可用
a = ['alpha', 'beta', 'gamma', 'delta']
b = a.copy()
b.remove('alpha')
print('A list is', a)
print('B list is', b)
希望这会有所帮助