浅谈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实现扫描局域网活动ip(扫描在线电脑)
Apr 28 Python
Python的包管理器pip更换软件源的方法详解
Jun 20 Python
python绘制散点图并标记序号的方法
Dec 11 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
Nov 11 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 Python
python框架Django实战商城项目之工程搭建过程图文详解
Mar 09 Python
Python3标准库glob文件名模式匹配的问题
Mar 13 Python
ipython jupyter notebook中显示图像和数学公式实例
Apr 15 Python
详解Pandas 处理缺失值指令大全
Jul 30 Python
Django cookie和session的应用场景及如何使用
Apr 29 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
Apr 14 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
ThinkPHP实现将SESSION存入MYSQL的方法
2014/07/22 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
jQuery UI Datepicker length为空或不是对象错误的解决方法
2010/12/19 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
Jquery实现自定义弹窗示例
2014/03/12 Javascript
如何用JavaScript定义一个类
2014/09/12 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
JQuery包裹DOM节点的方法
2015/06/11 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
2015/11/02 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
jquery UI Datepicker时间控件的使用及问题解决
2016/04/28 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
详解Nuxt.js部署及踩过的坑
2018/08/07 Javascript
js实现图片区域可点击大小随意改变(适用移动端)代码实例
2019/09/11 Javascript
js实现无缝轮播图
2020/03/09 Javascript
python验证码识别的实例详解
2016/09/09 Python
使用Flask集成bootstrap的方法
2018/07/24 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
CSS3条纹背景制作的实战攻略
2016/05/31 HTML / CSS
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
应聘收银员个人的求职信
2013/11/30 职场文书
2014年清明节寄语
2014/04/03 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
公司给客户的感谢信
2015/01/23 职场文书
比较几种Redis集群方案
2021/06/21 Redis
图片批量处理 - 尺寸、格式、水印等
2022/03/07 杂记
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python