浅谈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中编写ORM框架的入门指引
Apr 29 Python
python递归计算N!的方法
May 05 Python
python使用电子邮件模块smtplib的方法
Aug 28 Python
Python生成8位随机字符串的方法分析
Dec 05 Python
python正则实现提取电话功能
Feb 24 Python
Python 3.8新特征之asyncio REPL
May 28 Python
python中的协程深入理解
Jun 10 Python
Pytorch maxpool的ceil_mode用法
Feb 18 Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 Python
Python 程序员必须掌握的日志记录
Aug 17 Python
python复合条件下的字典排序
Dec 18 Python
深入理解Python变量的数据类型和存储
Feb 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按百分比生成缩略图的代码分享
2014/05/10 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
2020/01/04 PHP
php使用event扩展的io复用测试的示例
2020/10/20 PHP
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
js正确获取元素样式详解
2009/08/07 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
IE网页js语法错误2行字符1、FF中正常的解决方法
2013/09/09 Javascript
巧用局部变量提升javascript性能
2014/02/24 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
jQuery插件jRumble实现网页元素抖动
2015/06/05 Javascript
JS动态创建DOM元素的方法
2015/06/09 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
2016/07/01 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
微信小程序实现的涂鸦功能示例【附源码下载】
2018/01/12 Javascript
Jquery异步上传文件代码实例
2019/11/13 jQuery
基于python时间处理方法(详解)
2017/08/14 Python
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
python实现连续图文识别
2018/12/18 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
Python实现FLV视频拼接功能
2020/01/21 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
中国包裹转运寄送国际服务:Famiboat
2019/07/24 全球购物
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
超级搞笑检讨书
2014/01/15 职场文书
关于圣诞节的广播稿
2014/01/26 职场文书
2014端午节活动策划方案
2014/01/27 职场文书
德能勤绩廉个人总结
2015/02/14 职场文书
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android
Rust 连接 PostgreSQL 数据库的详细过程
2022/01/22 PostgreSQL
Web应用开发TypeScript使用详解
2022/05/25 Javascript