Python中的深拷贝和浅拷贝
2021/4/16 14:27:36
本文主要是介绍Python中的深拷贝和浅拷贝,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
深拷贝与浅拷贝
浅拷贝(简单拷贝)
- 特点:只能拷贝当前列表,不能拷贝列表中的多维列表元素
实例(一维列表浅拷贝):
newlist = varlist.copy() #两个对象的内存地址不一样 print(varlist,id(varlist)) print(newlist,id(newlist)) #对new列表进行操作也是独立的 del newlist[0] print(varlist,newlist) #输出结果 [1, 2, 3] 140568546805448 [1, 2, 3] 140568546673992 [1, 2, 3] [2, 3]
实例2(多维列表浅拷贝):
#定义多维列表 varlist = [1,2,3,[1,2,3],[4,5,6],[7,8,9]] newlist = varlist.copy() print(varlist,id(varlist)) print(newlist,id(newlist)) #当操作拷贝后的列表中元素,源列表也收到的影响 del newlist[3][1] print(varlist,id(varlist)) print(newlist,id(newlist)) #简单拷贝只是拷贝的外面一层,内部元素对象还是引用的 #多维列表中的同一个元素(对象)其实内存地址是一样的 print(varlist[4],id(varlist[4])) print(newlist[4],id(newlist[4])) #输出结果 [1, 2, 3, [1, 2, 3], [4, 5, 6], [7, 8, 9]] 140568546821384 [1, 2, 3, [1, 2, 3], [4, 5, 6], [7, 8, 9]] 140568546805448 [1, 2, 3, [1, 3], [4, 5, 6], [7, 8, 9]] 140568546821384 [1, 2, 3, [1, 3], [4, 5, 6], [7, 8, 9]] 140568546805448 [4, 5, 6] 140568546821128 [4, 5, 6] 140568546821128
深拷贝
- 特点:不光拷贝当前的列表,还将列表汇总的多维元素也拷贝了一份
实例(多维列表深拷贝):
import copy varlist = [1,2,3,[1,2,3],[4,5,6],[7,8,9]] newlist = copy.deepcopy(varlist) #copy.copy()和普通的copy是一致的,尽量使用deepcopy,规避掉引用别的对象导致原列表改变的问题 #列表id地址不一致 print(varlist,id(varlist)) print(newlist,id(newlist)) #列表中的元素id地址也完全不一样 print(varlist[4],id(varlist[4])) print(newlist[4],id(newlist[4])) #输出结果 [1, 2, 3, [1, 2, 3], [4, 5, 6], [7, 8, 9]] 140568546821512 [1, 2, 3, [1, 2, 3], [4, 5, 6], [7, 8, 9]] 140568546821384 [4, 5, 6] 140568546822600 [4, 5, 6] 140568546823112
这篇关于Python中的深拷贝和浅拷贝的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程