python 赋值-浅拷贝-深拷贝

赋值:

    对象之间的赋值本质上是对象之间的引用的传递而已,也就是多个对象指向同一个数据空间。

浅拷贝:

  •     浅拷贝 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]]

猜你喜欢

转载自blog.csdn.net/w18306890492/article/details/82887575