python中的深拷贝和浅拷贝
-
import copy
a = [1, 2, 3,4, [‘a’, ‘b’]]
b = a.copy()
#就是浅拷贝
c = a
#给a的值贴上一个c的标签,和a的地位平等
d = copy.copy(a)
#浅拷贝
e = copy.deepcopy(a)
#深拷贝
下面我们更改a的值,看一下b,c,d,e的值的更改情况
## 我们将a[0]的值改为100,a[4,1]的值改为'z'
a[0] = 100
a[4,1] = ‘z’
#我们来看一下b,c,d,e的值的变化
‘’’>>> import copy
a = [1, 2, 3,4, [‘a’, ‘b’]]
b = a.copy()
c = a
d = copy.copy(a)
e = copy.deepcopy(a)
a [0] = 100
a[4][1] = ‘z’
‘’’
b
[1, 2, 3, 4, [‘a’, ‘z’]]
浅拷贝:父类元素的基础元素改变,浅拷贝元素不变,但是引用类型的数据还是用的父类元素的,可以说这节约了内存吧c
[100, 2, 3, 4, [‘a’, ‘z’]]
c跟a是完全一样的,不分父元素和子元素,两者任意一个变化,其他那个就会变化 (c和a占用1倍a的内存)d
[1, 2, 3, 4, [‘a’, ‘z’]]
d就是浅拷贝(a和d占用内存为(1,2)倍内存,视具体情况而定))e
[1, 2, 3, 4, [‘a’, ‘b’]]
深拷贝:就是在父元素的基础上产生了一个完全独立的元素,无论父元素怎么变化都与其无关(a和e占用a的两倍内存)