Python 2.7 从一个列表中删除它';s拷贝[python 2.7]
我创建了一个列表的副本。 当一个项目从一个副本中删除时,它也从原件中删除Python 2.7 从一个列表中删除它';s拷贝[python 2.7],python-2.7,list,deep-copy,shallow-copy,Python 2.7,List,Deep Copy,Shallow Copy,我创建了一个列表的副本。 当一个项目从一个副本中删除时,它也从原件中删除 a = ['alpha', 'beta', 'gamma', 'delta'] b = a b.remove('alpha') print 'A list is', a print 'B list is', b 我应该如何创建列表的独立副本,而不会影响原始副本 迟加 为了理解这个错误的原因,我们应该参考浅拷贝和深拷贝之间的区别 浅复制和深复制之间的区别仅与复合对象(包含其他对象的对象,如列表或类实例)相关: 浅复制
a = ['alpha', 'beta', 'gamma', 'delta']
b = a
b.remove('alpha')
print 'A list is', a
print 'B list is', b
我应该如何创建列表的独立副本,而不会影响原始副本
迟加
为了理解这个错误的原因,我们应该参考浅拷贝和深拷贝之间的区别
浅复制和深复制之间的区别仅与复合对象(包含其他对象的对象,如列表或类实例)相关:
- 浅复制构造一个新的复合对象,然后(尽可能)向其中插入对原始对象的引用
- 深度副本构造一个新的复合对象,然后递归地将在原始副本中找到的对象的副本插入其中
您可以使用内置的复制模块
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。不过,Python3.x中提供了复制模块
a = ['alpha', 'beta', 'gamma', 'delta']
b = a.copy()
b.remove('alpha')
print('A list is', a)
print('B list is', b)
希望这有帮助我刚刚得到一个-1,没有任何评论-这没有帮助。如果你认为这个问题是无关的、错误的或无用的-请解释(或相应地标记)谢谢你,而我仍然不明白为什么这是预期的行为-它给了我一个解决方案。