美文网首页
python 中的浅拷贝 深拷贝 引用

python 中的浅拷贝 深拷贝 引用

作者: 默写年华Antifragile | 来源:发表于2019-03-16 11:16 被阅读0次
import copy
a = [1,2,3,4,[5,6,7]]
a_1 = a # 对a的引用
a_copy = copy.copy(a) # 对 a 的浅拷贝
a_deep = copy.deepcopy(a) # 对 a 的 深拷贝

1. 引用

a_1 = a
等价于 a_1与a 完全相同,指向与同一个地址,无论改变 a 还是改变 a_1, 另外一个都会发生改变

2. 浅拷贝

a_copy = copy.copy(a)
只会拷贝浅层次的元素,即第一级元素,深成次的不会拷贝,依然是引用,即上例中的 a[0], a[1], a[2], a[3]会拷贝,而最后一个元素是一个 list,因此不会被拷贝;即改变 a 中的a[0], a[1], a[2], a[3],浅拷贝 a_copy 不会发生变化,但 改变 a[4](即 a 中的 list)会导致 a_copy 发生变化

3. 深拷贝

a_deep = copy.deepcopy(a)
深拷贝相较于浅拷贝会复制其深层次的元素,与原来的 a 没有任何关系,只是值相同的两个变量而已,深拷贝与原对象不会对对方造成影响.


注意以下代码:

  • for in属于浅拷贝,即只拷贝第一级元素,不会拷贝深层次的元素
  • 第一部分,对 i[0]进行操作,即进入到深层次的(下一级的)元素,因此会对原始数据产生影响
  • 第二部分, 只是对i进行操作,在同级同层次下,因此不会对原始数据产生影响

4. 分片操作

  • list[indexStart: indexEnd: step], 当step>0的时候,正向取值, 也就是从左往右取值,当step<0时,逆向取值。所以l[::-1]都是取的列表的逆序表, 也就是从右往左取值。

  • 分片操作其实就是按照一定的顺序访问序列中某一范围内的元素,记住一点就行了,那就是在一定的访问顺序中,indexStart所对应的元素必须先于indexEnd所对应的元素被访问到,否则,分片操作返回的就是空的序列;而访问元素的顺序由step决定是从左往右,还是从右往左。

  • 因此,l[0: -1: -1]是取不到值的。step < 0 ,从右往左访问数据, 先访问到得是indexEnd,再访问到indexStart。因此取到得得列表是空列表。

参考:https://blog.csdn.net/w494675608/article/details/82114798

相关文章

  • Python中的引用赋值,深拷贝,浅拷贝

    摘要:Python,引用赋值,深拷贝,浅拷贝 总结一下Python中的变量的引用赋值,深拷贝和浅拷贝,先上结论 赋...

  • python中的拷贝

    Python中的拷贝分为两种,浅拷贝与深拷贝 浅拷贝:浅拷贝是对于一个对象的顶层拷贝。通俗的理解是:拷贝了引用,并...

  • 简介深浅拷贝

    深浅拷贝 python 直接赋值,浅拷贝和深拷贝 直接赋值 其实就是对象的引用 (可以理解成浅拷贝) 浅拷贝: 拷...

  • python(进阶一)

    三范式 GIL 深拷贝与浅拷贝 深拷贝 浅拷贝 跟引用的区别 python基本上如果提供了copy方法都是浅cop...

  • 简述三范式,GIL,浅拷贝与深拷贝

    三范式 GIL 深拷贝与浅拷贝 深拷贝 浅拷贝 跟引用的区别 python基本上如果提供了copy方法都是浅cop...

  • js中的深拷贝和浅拷贝

    一、深拷贝与浅拷贝 深拷贝和浅拷贝只针对Object,Array这些复杂的引用对象。浅拷贝,只复制对象的引用的地址...

  • Python之深浅拷贝

    个人认为这个知识点比较重要,所以单独做了一个文章 Python中的浅拷贝就是对引用的拷贝,深拷贝就是对引用的拷贝,...

  • python深拷贝和浅拷贝详解

    对于python来说,有两种拷贝类型,浅拷贝和深拷贝 但要注意的是= 不是浅拷贝也不是深拷贝,赋值是新建了一个引用...

  • 谈谈python中的深拷贝和浅拷贝

    最近面试被问到python中深拷贝和浅拷贝的知识这里进行下总结,以便今后复习python中的深拷贝和浅拷贝和jav...

  • 面试题iOS

    面试blog 1、深拷贝浅拷贝:浅拷贝就是拷贝对象的指针,而不复制引用对象本身;深拷贝就是拷贝引用对象本身;浅复制...

网友评论

      本文标题:python 中的浅拷贝 深拷贝 引用

      本文链接:https://www.haomeiwen.com/subject/emmjmqtx.html