码迷,mamicode.com
首页 > 编程语言 > 详细

python中赋值-浅拷贝-深拷贝之间的关系

时间:2018-12-11 21:45:20      阅读:424      评论:0      收藏:0      [点我收藏+]

标签:array   技术分享   list   nump   src   jpg   数据结构   复制   技术   

赋值:

变量的引用,没有拷贝空间

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

 

拷贝的对象分两种类型:

. 拷贝可变类型
  浅拷贝:
    只拷贝第一层数据,不关心里面的第二层内容,能够保证外层数据独立
  深拷贝:
    拷贝了所有层数据,所有层数据都是独立。

  而一层可变类型数据,深拷贝和浅拷贝是一样,会拷贝。

. 拷贝不可变类型
  一层不可类型数据,深拷贝和浅拷贝也是一样,不会拷贝,只是引用
  多层都是不可类型数据,深拷贝和浅拷贝也是一样,不会拷贝,只是引用


  多层中只要有可变类型数据
    浅拷贝:
      只关心第一层,如果第一层是不可变类型,不会拷贝,只是引用

    深拷贝:
      关心所有层,多层中只要有一层是可变类型数据,所有层都拷贝,保证数据独立

 1 import copy
 2 
 3 # 浅拷贝
 4     copy.copy()
 5     list.copy()
 6     dict.copy()
 7     d = c[:] # 切边能拷贝一个列表
 8 
 9 # 深拷贝
10     copy.deepcopy()

技术分享图片

 

技术分享图片

技术分享图片

 

同样 numpy 下的数据结构与数据类型的转换(np.array vs. np.asarray)

np.array() 是深拷贝,np.asarray() 是浅拷贝

两者主要的区别在于,array(默认)复制一份对象,asarray不会执行这一动作。

1 def asarray(a, dtype=None, order=None):
2     return array(a, dtype, copy=False, order=order)

 

python中赋值-浅拷贝-深拷贝之间的关系

标签:array   技术分享   list   nump   src   jpg   数据结构   复制   技术   

原文地址:https://www.cnblogs.com/lzc978/p/10105024.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!