浅拷贝
a = [1, 2, 3, 4]
b = b.copy() # 把 a 列表复制一份
print(b)
b[0] = 5 # 修改 b 列表的中的元素
print(a) # 打印 a 列表
print(b) # 打印 b 列表
运行结果:
我们在这里看到 b 修改的元素并没有影响到 a 列表。
接下来我们把 a 列表的元素改一下再使用 copy 方法:
a = [[1, 2], 3, 4] # a 列表中包含了一个列表
b = a.copy()
print(b)
b[0][0] = 8 # 修改 b 列表里面的元素
print(a)
print(b)
运行结果:
现在 a,b 列表中的元素都改变了
下面是图解,浅拷贝只是拷贝了列表元素中的第一层,更深层并没有被拷贝。这里 b 拷贝了 a[0] 的内存地址 0088,通过 b[0][0] 修改了元素。a[0],b][0] 的内存地址并没有发生改变。
深拷贝
import copy
a = [[1, 2], 3, 4]
b = copy.deepcopy(a)
print(b)
b[0][0] = 8
print(a)
print(b)
运行结果:
使用了深拷贝后,对于 b 列表的改变并不会影响到 a 列表。