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,没有任何评论-这没有帮助。如果你认为这个问题是无关的、错误的或无用的-请解释(或相应地标记)谢谢你,而我仍然不明白为什么这是预期的行为-它给了我一个解决方案。