赋值:
对象之间的赋值本质上是对象之间的引用的传递而已,也就是多个对象指向同一个数据空间。
浅拷贝:
- 浅拷贝 copy.copy(x)
- 切片操作 x[:]
- copy方法 x.copy()
深拷贝:
深拷贝是对于一个对象所有层次的拷贝(递归)
copy.deepcopy(x)
为什么Python中大多数都是浅拷贝呢?
- 时间角度,浅拷贝花费时间更少
- 空间角度,浅拷贝花费内存更少
- 效率角度,浅拷贝只拷贝顶层数据,一般情况下比深拷贝效率高。
注意:
- copy.copy和copy.deepcopy对于不可变类型没有意义,全部等价于对象之间的赋值操作。
- copy.copy()对于可变类型,会进行浅拷贝
问题:
b = [9,9,9]
a = [1,2,3,b]
c = copy.copy(a)
d = copy.deepcopy(a)a[0] = 9
请问c和d值分别是多少
c = [1,2,3,[9,9,9]]
d = [1,2,3,[9,9,9]]扫描二维码关注公众号,回复: 3441488 查看本文章a[3][2] = 10
请问c和d值分别是多少
c = [1,2,3,[9,9,10]]
d = [1,2,3,[9,9,9]]