【python】copy deepcopy 赋值= 对比
上结论
写法 | 是否独立 | 是否安全修改 |
---|---|---|
copy() (用于一维列表) | ✅ 是独立副本 | ✅ 安全 |
deepcopy() (多层结构时用) | ✅ 是完全副本 | ✅ 安全 |
直接赋值(= ) | ❌ 是引用 | ❌ 改一个会影响另一个 |
一、.copy() 和 deepcopy() 有什么区别?
copy()
是 浅拷贝,只复制第一层内容:
1.如果是嵌套,则a被改
a = [[1, 2], [3, 4]]
b = a.copy()b[0][0] = 99
print(a) # [[99, 2], [3, 4]] ← 原始数据也被改了
2.如果只有一层,则a不变
a = [0, 200, 1, 201, -1]
b = a.copy()
b[0] = 999
print("原始 a:", a) # 👉 [0, 200, 1, 201, -1]
print("修改后 b:", b) # 👉 [999, 200, 1, 201, -1]
deepcopy()
是 深拷贝,会递归复制所有层:
import copy
a = [[1, 2], [3, 4]]
b = copy.deepcopy(a)b[0][0] = 99
print(a) # [[1, 2], [3, 4]] ← 原始数据没变
二、赋值=
两者会互相影响
其他相关文章
https://blog.csdn.net/2401_86285609/article/details/147365727?spm=1011.2415.3001.5331