对于简单的 object,用 shallow copy 和 deep copy 没区别
复杂的 object, 如 list 中套着 list 的情况,shallow copy 中的 子list,并未从原 object 真的「独立」出来。也就是说,如果你改变原 object 的子 list 中的一个元素,你的 copy 就会跟着一起变。这跟我们直觉上对「复制」的理解不同。
import copy l1 = [[1, 2], 3] l2 = copy.copy(l1) l3 = copy.deepcopy(l1) l2.append(4) l2[0].append(5) l3[0].append(6)
l1 = [[1, 2, 5], 3] #改变了l2后l1也改变了 l2 = [[1, 2, 5], 3, 4] l3 = [[1, 2, 6], 3]#用深拷贝就能解决list套list的情况了
在python中复制太不同了,c++是默认深拷贝,python是默认浅拷贝
numpy只要用.copy就是深拷贝