Python深拷贝浅拷贝详解
今天看到b站上一个up的视频,真的是b站最通透最透彻的视频
贴个链接https://www.bilibili.com/video/BV1jT4y1G7AN?from=search&seid=843216970259102307&spm_id_from=333.337.0.0
因为大受启发,所以赶紧写在博客上,方便以后复习学习
浅拷贝:主要就是拷贝父级,父级里的子级不会复制,我举个例子
a = [1,2,3,[4,5,6,[7,8,9]]] b = a.copy(). #浅拷贝 print(b)
我们可以看到只复制了父级,至于我前面为什么说子级不会复制,而这里却有子级呢?继续看
a = [1,2,3,[4,5,6,[7,8,9]]] b = a.copy()#浅拷贝 b[2] = 2 b[3][0] = 9
print(a)
print(b)
在看输出结果
我首先对b[2]赋值,b的值修改了,而a的值却没有变,我再次对b[3][0]进行赋值,却发现a和b都发生了改变
这就是因为我们浅拷贝拷贝了a的父级,现在a和b父级是两个互不干扰的个体
而子集并没有拷贝过来,只是指向。一张图就能看懂
图是b站up主的图,数字和我的对不上,主要是看图理解问题
深拷贝就很简单了,需要用到copy模块中的deepcopy方法,定义:对父级和子集一同复制下来,但是是两个独立的个体。
我怎么修改其中的值都不会对被复制的值产生影响,说人话直接看图
import copy a = [1,2,3,[4,5,6,[7,8,9]]] d = copy.deepcopy(a) d[2] = 99 d[3][2] = 100 print(a) print(d)
我对a进行深拷贝,把深拷贝的值给d,对d进行随意修改,随意修改对a没有任何影响。