Python 中的 copy()和deepcopy()


Posted in Python onNovember 07, 2021

前言:

在处理列表和字典时,尽管传递引用常常是最方便的方法,但如果函数修改了传入的列表或字典,可能不希望这些变动影响原来的列表或字典。要做到这一点,Python提供了名为copy的模块,其中包含copy()deepcopy()函数。

第一个函数copy.copy() ,可以用来复制列表或字典这样的可变值,而不是只复制引用。

两者的区别是copy.copy()是这复制了列表或字典的值,但是引用还是同一个。而copy.deepcopy()是产生一个新的引用使新的变量和被复制变量引用不同。

看下面的示例代码:

1、copy.copy()

示例代码:

import copy
spam = ['A','B','C','D',[1,2,3,4]]
cheese = copy.copy(spam)
spam[0] = 42
print(spam)

运行结果:

[42,'B','C','D',[1,2,3,4]]

根据结果可以看出,使用copy.copy()函数时,cheese是复制了spam列表引用,对spam列表操作时,也会对cheese列表产生影响。这也被称为浅copy

2、deepcopy.copy()

示例代码:

#Python学习交流群:778463939
import copy
spam = ['A','B','C','D',[1,2,3,4]]
cheese = copy.deepcopy(spam)#不同部分
spam[0] = 42
print(spam)

运行结果:

[42,'B','C','D',[1,2,3,4]]

根据结果可以看出,使用deepcopy()时,对spam列表操作不会对cheese列表产生影响,这是因为deepcopy()是产生一个新的引用,这样spamcheese

是两个不同的引用所以在对spam列表操作时不会对cheese列表产生影响。

到此这篇关于Python 中的 copy()和deepcopy()的文章就介绍到这了,更多相关Python  copy()和deepcopy()内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中使用Tkinter模块创建GUI程序实例
Jan 14 Python
Python中文字符串截取问题
Jun 15 Python
深入解析Python的Tornado框架中内置的模板引擎
Jul 11 Python
Python中is与==判断的区别
Mar 28 Python
Python实现读取字符串按列分配后按行输出示例
Apr 17 Python
Python3基本输入与输出操作实例分析
Feb 14 Python
Selenium常见异常解析及解决方案示范
Apr 10 Python
如何以Winsows Service方式运行JupyterLab
Aug 30 Python
python与js主要区别点总结
Sep 13 Python
Python操作dict时避免出现KeyError的几种解决方法
Sep 20 Python
最新Python idle下载、安装与使用教程图文详解
Nov 28 Python
scrapy-splash简单使用详解
Feb 21 Python
Python MNIST手写体识别详解与试练
Python基础 括号()[]{}的详解
Nov 07 #Python
Python Flask搭建yolov3目标检测系统详解流程
关于 Python json中load和loads区别
Nov 07 #Python
Python卷积神经网络图片分类框架详解分析
Nov 07 #Python
Python人工智能之混合高斯模型运动目标检测详解分析
7个关于Python的经典基础案例
Nov 07 #Python
You might like
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
php中使用session防止用户非法登录后台的方法
2015/01/27 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
基于php中echo用逗号和用点号的区别详解
2018/01/23 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
取选中的radio的值
2010/01/11 Javascript
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
js 日期比较相关天数代码
2014/04/02 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
基于jquery实现轮播焦点图插件
2016/03/31 Javascript
AngularJS 中文API参考手册
2016/07/28 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
2017/03/17 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
vue.js的安装方法
2017/05/12 Javascript
CentOS环境中MySQL修改root密码方法
2018/01/07 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
vue实现点击选中,其他的不选中方法
2018/09/05 Javascript
Jquery实现无缝向上循环滚动列表的特效
2019/02/13 jQuery
快速搭建Node.js(Express)用户注册、登录以及授权的方法
2019/05/09 Javascript
Unicode和Python的中文处理
2017/03/19 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
快速了解Python中的装饰器
2018/01/11 Python
python距离测量的方法
2018/03/06 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
HTML5 Canvas中使用用路径描画圆弧
2015/01/01 HTML / CSS
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
2014年超市员工工作总结
2014/11/18 职场文书
2014年妇联工作总结
2014/11/21 职场文书
高一语文教学反思
2016/02/16 职场文书