我不明白浅复制和深复制之间的区别。 copy.copy 和 copy.deepcopy() 给出完全相同的输出。 他们的内存位置似乎与另一个不同,但参考地址让我很困惑。
深层复制还将复制nested容器。也许最好的演示方法是展示一个浅拷贝不足的示例:
>>> import copy
>>> L1 = []
>>> L2 = [L1]
>>> L3 = copy.copy(L2)
现在L3是L2的浅拷贝。对 L2 本身的修改不会被镜像:
>>> L2.append("x")
>>> L2
[[], 'x']
>>> L3
[[]]
但是,对嵌套列表 L1 的修改将反映在以下两个中:
>>> L1.append("y")
>>> L2
[['y'], 'x']
>>> L3
[['y']]
如果我们在创建L3时使用
copy.deepcopy
而不是copy.copy
,那么L3在这里仍然是[[]]
,L3和L2将真正断开连接。