浅谈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 list语法学习(带例子)
Nov 01 Python
用Python实现一个简单的线程池
Apr 07 Python
Python2.x版本中基本的中文编码问题解决
Oct 12 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
Nov 01 Python
Python实现嵌套列表去重方法示例
Dec 28 Python
Python拼接微信好友头像大图的实现方法
Aug 01 Python
python3.7 使用pymssql往sqlserver插入数据的方法
Jul 08 Python
查看Python依赖包及其版本号信息的方法
Aug 13 Python
django框架中间件原理与用法详解
Dec 10 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
Feb 17 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
Apr 24 Python
总结python 三种常见的内存泄漏场景
Nov 20 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抓即时股票信息
2006/10/09 PHP
PHP常用技巧总结(附函数代码)
2012/02/04 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
freemarker判断对象是否为空的方法
2015/08/13 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
2016/03/14 Javascript
jquery常用的12个小功能
2016/07/22 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
JavaScript判断浏览器及其版本信息
2017/01/20 Javascript
javaScript实现滚动条事件详解
2020/03/24 Javascript
node+express框架中连接使用mysql(经验总结)
2018/11/10 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
2019/03/01 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
[01:26]DOTA2荣耀之路2:iG,China
2018/05/24 DOTA
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
Python的Scrapy爬虫框架简单学习笔记
2016/01/20 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
python中tab键是什么意思
2020/06/18 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
CSS3实现苹果手机解锁的字体闪亮效果示例
2021/01/05 HTML / CSS
销售心得体会
2014/01/02 职场文书
高级销售求职信
2014/02/21 职场文书
《桥》教学反思
2014/04/09 职场文书
银行自荐信怎么写
2015/03/05 职场文书
药品开票员岗位职责
2015/04/15 职场文书
《花钟》教学反思
2016/02/17 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
php引用传递
2021/04/01 PHP
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫