python中的浅复制和深复制
python中赋值有三种方法:
1.直接赋值,形式如下:
a=[1,2]
2.浅复制,形式如下:
a=[1,2] b=a #浅复制 b=a.copy() #浅复制
3.深复制,形式如下:
a=[1,2] b=copy.deepcopy(a) #深复制
表面上看浅复制和深复制没什么区别,而且很多时候,我们定义列表等数据只需要使用一次,或者对其的操作是连续的,这个时候浅复制和深复制其实没什么区别,浅复制的的语法表达上还会更简单。但对于某一些场景,我们对列表进行增删之后还需要最初始的列表,这个时候用浅复制你会发现所有通过浅复制的列表都已经是增删之后的列表了,最原始的列表是找不到的,这就是浅复制的缺点。
浅复制实际上它的父对象和子对象公用一份数据,不知道在内存里面是不是也是公用所以才这样,这样你只要改动其中一个对象,其他所有对象也会跟着改变,而深复制的父对象和子对象的数据是互相独立的,更改其中任意对象其他对象都不会受影响。