先来结论:我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。
—–而浅复制并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。这就和我们寻常意义上的复制有所不同了。
结论来自大写的ZDQ 的文章
浅拷贝(shallow copy),深拷贝(deep copy)
其实在做题的过程中遇到过关于深拷贝浅拷贝的问题,但是由于题目并不是考察这个问题,也没在意具体的原理,只是在操作的时候对需要拷贝的列表做了ls2=ls1.copy()处理,当时不懂原理,只知道这样做完再得到ls2以后,再去修改ls1,对ls2不会有影响,现在看来这就是深拷贝了。
可以在shell中做如下的试验:
>>>a=[1,2,3]
>>>b=a.copy()
>>>a.append(4)
>>>a
[1,2,3,4]
>>>b
[1,2,3]
这是对于列表的copy()方法
除了这个外,主要还有python的copy模块
>>>import copy
>>>a=[1,2,[3,4]]
>&