浅谈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中的decode()方法的使用
May 18 Python
Django框架中处理URLconf中特定的URL的方法
Jul 20 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
Jun 14 Python
python多进程和多线程究竟谁更快(详解)
May 29 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
Jun 20 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
Apr 16 Python
python GUI实现小球满屏乱跑效果
May 09 Python
python列表生成器迭代器实例解析
Dec 19 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
Feb 18 Python
django 数据库 get_or_create函数返回值是tuple的问题
May 15 Python
利用python绘制正态分布曲线
Jan 04 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写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
javascript中字符串拼接需注意的问题
2010/07/13 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
浅析jquery与checkbox的checked属性的问题
2016/04/27 Javascript
Bootstrap CSS组件之输入框组
2016/12/17 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
JavaScript中创建原子的方法总结
2018/08/26 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
nodejs aes 加解密实例
2018/10/10 NodeJs
javascript实现留言板功能
2020/02/08 Javascript
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
python通过post提交数据的方法
2015/05/06 Python
python实现的简单抽奖系统实例
2015/05/22 Python
Python实现处理管道的方法
2015/06/04 Python
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
2019/08/27 Python
jupyter修改文件名方式(TensorFlow)
2020/04/21 Python
Pytorch转tflite方式
2020/05/25 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
客户代表实习人员自我鉴定
2013/09/27 职场文书
职专应届生求职信
2013/11/16 职场文书
领导视察欢迎词
2014/01/15 职场文书
出纳工作岗位责任制
2014/02/02 职场文书
企业安全生产承诺书
2014/05/22 职场文书
土建专业毕业生自荐书
2014/07/04 职场文书
护士求职信
2014/07/05 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
教师业务学习材料
2014/12/16 职场文书
Python访问Redis的详细操作
2021/06/26 Python