浅谈python中copy和deepcopy中的区别


Posted in Python onOctober 23, 2017

在下是个编程爱好者,最近将魔爪伸向了Python编程。。。。。遇到copy和deepcopy感到很困惑,现在针对这两个方法进行区分,一种是浅复制(copy),一种是深度复制(deepcopy)。

首先说一下deepcopy,所谓的深度复制,在这里我理解的是完全复制然后变成一个新的对象,复制的对象和被复制的对象没有任何关系,彼此之间无论怎么改变都相互不影响。

然后说一下copy,在这里我分为两类来说,一种是字典数据类型的copy函数,一种是copy包的copy函数。

一、字典数据类型的copy函数,当简单的值替换的时候,原始字典和复制过来的字典之间互不影响,但是当添加,删除等修改操作的时候,两者之间会相互影响。

(1)值替换

import copy 
d = { 
  'name' : ['An','Assan'] 
} 
c = d.copy() 
dc = copy.deepcopy(d) 
d['name'] = ['an'] 
print c 
print d 
print dc

结果如下:

{'name': ['An', 'Assan']} 
{'name': ['an']} 
{'name': ['An', 'Assan']}

(2)值修改

import copy 
d = { 
  'name' : ['An','Assan'] 
} 
c = d.copy() 
dc = copy.deepcopy(d) 
d['name'].append('shu') 
print c 
print d 
print dc

结果如下:

{'name': ['An', 'Assan', 'shu']} 
{'name': ['An', 'Assan', 'shu']} 
{'name': ['An', 'Assan']}

二、copy包中的copy函数,无论是修改还是值替换两者之间都互不影响。

import copy 
seq = [1,2,3] 
seq1 = seq 
seq2 = copy.copy(seq) 
seq3 = copy.deepcopy(seq) 
seq.append(4) 
seq2[2] = 5 
print seq,seq1,seq2,seq3

结果如下:

[1, 2, 3, 4] [1, 2, 3, 4] [1, 2, 5] [1, 2, 3]

在上面代码中,sql1 = seq其实是同是指向同一个对象地址,使用的同一个对象引用。

总结

以上就是本文关于浅谈python中copy和deepcopy中的区别的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:python实现微信接口(itchat)详细介绍、基于Python和Scikit-Learn的机器学习探索等,有什么问题可以随时留言,小编会及时回复大家的。小编也是刚开始学习Python,下面推荐本站基本关于Python的书籍,免费下载,供大家学习参考:

Python算法教程 ([挪威]赫特兰) 中文完整pdf扫描版

Python核心编程(第3版) (美.Wesley Chun) 中文pdf完整版

希望大家能够喜欢,感谢朋友们对三水点靠木网站的支持!

Python 相关文章推荐
python使用append合并两个数组的方法
Apr 28 Python
python迭代器与生成器详解
Mar 10 Python
利用python发送和接收邮件
Sep 27 Python
使用Python3制作TCP端口扫描器
Apr 17 Python
Python3.4实现远程控制电脑开关机
Feb 22 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
Apr 19 Python
Python使用sort和class实现的多级排序功能示例
Aug 15 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
Sep 13 Python
关于Python字符串显示u...的解决方式
Mar 06 Python
Python实现检测文件的MD5值来查找重复文件案例
Mar 12 Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 Python
python使用smtplib模块发送邮件
Dec 17 Python
python的构建工具setup.py的方法使用示例
Oct 23 #Python
python使用pyqt写带界面工具的示例代码
Oct 23 #Python
基于Django的python验证码(实例讲解)
Oct 23 #Python
itchat接口使用示例
Oct 23 #Python
python实现微信接口(itchat)详细介绍
Oct 23 #Python
python爬虫_微信公众号推送信息爬取的实例
Oct 23 #Python
Python 模拟员工信息数据库操作的实例
Oct 23 #Python
You might like
基于PHP与XML的PDF文档生成技术
2006/10/09 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
PHP获取文件扩展名的方法实例总结
2017/06/10 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
.NET微信公众号开发之创建自定义菜单
2015/07/16 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
2015/09/20 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
javascript自执行函数
2017/02/10 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
Vue底层实现原理总结
2018/02/17 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
[03:08]迎霜节狂欢!2018年迎霜节珍藏Ⅰ一览
2018/12/25 DOTA
Python基于动态规划算法计算单词距离
2015/07/25 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
用Python解决x的n次方问题
2019/02/08 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
孤独星球出版物:Lonely Planet Publications
2018/03/17 全球购物
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
介绍一下javax.servlet.Servlet接口及其主要方法
2015/11/30 面试题
触摸春天教学反思
2014/02/03 职场文书
家庭贫困证明书(3篇)
2014/09/15 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
公司人事管理制度
2015/08/05 职场文书
Echarts如何重新渲染实例详解
2022/05/30 Javascript
Rust中的Struct使用示例详解
2022/08/14 Javascript