浅复制和深复制之间有什么区别?

问题描述 投票:0回答:1

我不明白浅复制和深复制之间的区别。 copy.copy 和 copy.deepcopy() 给出完全相同的输出。 他们的内存位置似乎与另一个不同,但参考地址让我很困惑。

python deep-copy
1个回答
0
投票

深层复制还将复制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将真正断开连接。

© www.soinside.com 2019 - 2024. All rights reserved.