浅谈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二分法实现实例
Nov 21 Python
Python随机生成数据后插入到PostgreSQL
Jul 28 Python
Anaconda入门使用总结
Apr 05 Python
matplotlib subplots 设置总图的标题方法
May 25 Python
Python测试网络连通性示例【基于ping】
Aug 03 Python
python得到单词模式的示例
Oct 15 Python
用Python实现读写锁的示例代码
Nov 05 Python
详解10个可以快速用Python进行数据分析的小技巧
Jun 24 Python
使用OpenCV实现仿射变换—缩放功能
Aug 29 Python
Python通过类的组合模拟街道红绿灯
Sep 16 Python
python 使用openpyxl读取excel数据
Feb 18 Python
Pytorch如何切换 cpu和gpu的使用详解
Mar 01 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使用substr()和strpos()联合查找字符串中某一特定字符的方法
2015/05/12 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
php中上传文件的的解决方案
2018/09/25 PHP
不错的asp中显示新闻的功能
2006/10/13 Javascript
jQuery TextBox自动完成条
2009/07/22 Javascript
JQuery中$之选择器用法介绍
2011/04/05 Javascript
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
2011/10/21 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
2015/03/23 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
详解如何实现一个简单的Node.js脚手架
2017/12/04 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
JS实现求5的阶乘示例
2019/01/21 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
Django如何使用jwt获取用户信息
2020/04/21 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
优秀学生干部个人的自我评价
2013/10/04 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
幼儿园教师自我鉴定
2014/03/20 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
CSS基础详解
2021/10/16 HTML / CSS
Nginx+Windows搭建域名访问环境的操作方法
2022/03/17 Servers
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android
mysql如何查询连续记录
2022/05/11 MySQL