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没有任何影响。

 


__EOF__

本文作者汪成阳
本文链接https://www.cnblogs.com/wangchengyang/p/15542632.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   非非非常帅的辰  阅读(64)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

支付宝打赏