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基础教程之正则表达式基本语法以及re模块
Mar 25 Python
python中类和实例如何绑定属性与方法示例详解
Aug 18 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 Python
详解Python3中的迭代器和生成器及其区别
Oct 09 Python
详解python中的time和datetime的常用方法
Jul 08 Python
Python传递参数的多种方式(小结)
Sep 18 Python
100行Python代码实现每天不同时间段定时给女友发消息
Sep 27 Python
使用Python脚本从文件读取数据代码实例
Jan 19 Python
PyQt5+python3+pycharm开发环境配置教程
Mar 24 Python
python调用win32接口进行截图的示例
Nov 11 Python
python 实现有道翻译功能
Feb 26 Python
Python机器学习之PCA降维算法详解
May 19 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
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
PHP-Java-Bridge使用笔记
2014/09/22 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
Laravel中使用阿里云OSS Composer包分享
2015/02/10 PHP
php实现上传图片保存到数据库的方法
2015/02/11 PHP
php支持中文字符串分割的函数
2015/05/28 PHP
jquery 模板的应用示例
2013/11/12 Javascript
js中用window.open()打开多个窗口的name问题
2014/03/13 Javascript
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
javascript跨域总结之window.name实现的跨域数据传输
2015/11/01 Javascript
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
2016/07/07 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
Python类属性与实例属性用法分析
2015/05/09 Python
Python使用multiprocessing创建进程的方法
2015/06/04 Python
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
python实现简单点对点(p2p)聊天
2017/09/13 Python
对pandas中apply函数的用法详解
2018/04/10 Python
Python unittest 简单实现参数化的方法
2018/11/30 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
wxPython实现画图板
2020/08/27 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
Linux的文件类型
2016/07/05 面试题
求职简历自荐信
2014/06/18 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
优秀教研组申报材料
2014/12/26 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
2021/05/28 Python