python学习之深浅拷贝
深浅拷贝
浅拷贝:
1、针对的是可变数据类型:list、dict、set ,不可变数据类型int、str、tuple、bool 是没有拷贝一说的,他们都没copy() 方法
2、浅拷贝后是在内存地址中分配了一份新的地址,且浅拷贝只拷贝了第一层,第二层不会拷贝,故第二层如果改变,原数据及浅拷贝后的数据也将改变
3、= 赋值不是浅拷贝,[:] 切片是浅拷贝
a = [11,22,[11,22]]
b = a
注:以上称为赋值,只是将a,b都指向了同一个内存地址
a.append(33)
print(b)
>>> [11,22,[11,22],33] 还是一起改变,b和a都是列表的内存地址的两个别名
c = a.copy() 用方法copy是浅拷贝,id(a) 与 id(c) 的内存地址是不同的
3、切片是浅拷贝
1 lis = [11,22,[11,22]] 2 qie = lis[:] 3 lis[2].append(33) 4 print(lis,qie) # [11, 22, [11, 22, 33]] [11, 22, [11, 22, 33]] 5 print(id(lis),id(qie)) # 1482689615624 1482689615752
深拷贝:
就是将原文件内部元素完全拷贝,不会将因为第二层元素改变,另一个也会改变
深拷贝方法:
import copy
list_new = copy.deepcopy()
人生苦短,我用python!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具