【发布时间】:2012-12-11 06:40:44
【问题描述】:
如何在 python 中为列表完成深度复制?
我对复制列表有点困惑。是使用浅拷贝还是深拷贝?
另外,子列表的语法是什么?是g=a[:]吗?
【问题讨论】:
标签: python list shallow-copy deep-copy
如何在 python 中为列表完成深度复制?
我对复制列表有点困惑。是使用浅拷贝还是深拷贝?
另外,子列表的语法是什么?是g=a[:]吗?
【问题讨论】:
标签: python list shallow-copy deep-copy
从Python Doc你必须使用copy.deepcopy(x)
【讨论】:
新列表是引用的副本。 g[0] 和 a[0] 都引用同一个对象。因此这是一个浅拷贝。可以看到copy模块的deepcopy递归复制容器的方法,不过这在我的经验中不是很常见的操作。
在风格上,我更喜欢更明确的 g = list(a) 来创建列表的副本,但创建完整的切片具有相同的效果。
【讨论】:
a = [1, 2, 3] 时,copy.copy 和 copy.deepcopy 的行为方式相同
[1, 2, 3] 这样的序列只是一个容器。浅拷贝和深拷贝之间的区别仅在容器嵌套时才重要。如果您尝试像这样的嵌套容器,它可能会有所帮助,[1, 2, ["a", "b", "c"]]