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 相关文章推荐
在CentOS6上安装Python2.7的解决方法
Jan 09 Python
Python打印“菱形”星号代码方法
Feb 05 Python
python 显示数组全部元素的方法
Apr 19 Python
python 删除指定时间间隔之前的文件实例
Apr 24 Python
python单例模式的多种实现方法
Jul 26 Python
解决python有时候import不了当前的包问题
Aug 28 Python
在Django下测试与调试REST API的方法详解
Aug 29 Python
python django生成迁移文件的实例
Aug 31 Python
PyCharm搭建Spark开发环境的实现步骤
Sep 05 Python
详解python的super()的作用和原理
Oct 29 Python
python 装饰器的基本使用
Jan 13 Python
Python turtle实现贪吃蛇游戏
Jun 18 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
ThinkPHP Mobile使用方法简明教程
2014/06/18 PHP
php保存信息到当前Session的方法
2015/03/16 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
2015/05/13 PHP
PHP实现的json类实例
2015/07/28 PHP
php经典趣味算法实例代码
2020/01/21 PHP
javascript 写类方式之二
2009/07/05 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
jQuery实现二维码扫描功能
2017/01/09 Javascript
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
解决element ui select下拉框不回显数据问题的解决
2019/02/20 Javascript
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
PHP webshell检查工具 python实现代码
2009/09/15 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
Python 字符串转换为整形和浮点类型的方法
2018/07/17 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
python读写Excel表格的实例代码(简单实用)
2019/12/19 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
详解使用双缓存解决Canvas clearRect引起的闪屏问题
2019/04/29 HTML / CSS
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
深入开展党的群众路线教育实践活动方案
2014/02/04 职场文书
比赛口号大全
2014/06/10 职场文书
主题党日活动总结
2014/07/08 职场文书
2014年党的群众路线学习心得体会
2014/11/05 职场文书
工会工作个人总结
2015/03/03 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
工作迟到检讨书范文
2015/05/06 职场文书
新手入门Mysql--sql执行过程
2021/06/20 MySQL
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android