python浅拷贝和深拷贝详解,python中深浅拷贝的区别

  python浅拷贝和深拷贝详解,python中深浅拷贝的区别

  注意:其实numpy中的复制和Python中的复制在很多方面都是相似的,通常可以分为三种:无复制,即赋值操作、浅复制和深复制。

  无复制(赋值操作)原生Python:

  输出结果:

  在numpy: summary: no copy,即赋值操作时,Python原生赋值和numpy赋值的作用是一样的,都是指内存意义,即引用的传递。

  浅层复制Python浅层复制:

  输出:从显示结果可以看出,Python native shallow copy只复制了对象的表层(第一层),并没有复制所有级别的数据。它是其他级别数据的参考。

  当然,如果在这里细谈,也要区分我们内心数据的数据类型,比如:1。浅拷贝变量数据时,会进行正常的浅拷贝;2.当浅拷贝不可变数据时,它只是一个内存点。

  Numpy浅拷贝:numpy浅拷贝后的对象不开辟新的内存空间,当我修改arr3时,原来的数据arr也会被修改。

  深层拷贝Python原生深层拷贝:

  输出:从输出结果来看,Python native deep copy是原始数据对象的各级副本,并开辟新的内存空间来保存新对象。当我修改一个对象时,另一个对象不受影响。比如我们以前有一瓶娃哈哈矿泉水A,我们对一瓶一模一样的娃哈哈矿泉水B做了深度拷贝,此时AB放在我桌面的左上角和右下角(即我深度拷贝后开辟了一个新的内存空间来存放娃哈哈矿泉水B)。同时,当我打开娃哈哈矿泉水A或B喝的时候,另一瓶矿泉水不会受到影响。

  Numpy深度复制:描述:numpy深度复制本质上类似于Python原生深度复制。它将打开新的内存空间来保存深度复制的对象。当我们修改其中一个对象时,另一个对象不会受到影响。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: