浅谈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 相关文章推荐
MySQL中表的复制以及大型数据表的备份教程
Nov 25 Python
Python基于PyGraphics包实现图片截取功能的方法
Dec 21 Python
Python实现使用request模块下载图片demo示例
May 24 Python
Python发展史及网络爬虫
Jun 19 Python
python-django中的APPEND_SLASH实现方法
Jun 21 Python
Python 微信爬虫完整实例【单线程与多线程】
Jul 06 Python
Python 迭代,for...in遍历,迭代原理与应用示例
Oct 12 Python
Python 复平面绘图实例
Nov 21 Python
浅谈对pytroch中torch.autograd.backward的思考
Dec 27 Python
Django限制API访问频率常用方法解析
Oct 12 Python
分布式全文检索引擎ElasticSearch原理及使用实例
Nov 14 Python
python实现高效的遗传算法
Apr 07 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转义输出HTML到JavaScript
2015/03/27 PHP
可以文本显示的公告栏的js代码
2007/03/11 Javascript
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
2013/01/23 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
2016/05/10 Javascript
超实用的JavaScript代码段 附使用方法
2016/05/22 Javascript
jQuery加载及解析XML文件的方法实例分析
2017/01/22 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
Nuxt配合Node在实际生产中的应用详解
2018/08/07 Javascript
vue 登录滑动验证实现代码
2018/08/24 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
详解vue 在移动端体验上的优化解决方案
2019/05/20 Javascript
微信小程序设置滚动条过程详解
2019/07/25 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
vscode中Vue别名路径提示的实现
2020/07/31 Javascript
python数据结构之二叉树的建立实例
2014/04/29 Python
Python使用multiprocessing创建进程的方法
2015/06/04 Python
Python 模板引擎的注入问题分析
2017/01/01 Python
关于python pyqt5安装失败问题的解决方法
2017/08/08 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
2018/07/04 Python
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
深入剖析HTML5 内联框架iFrame
2016/05/04 HTML / CSS
如何掌握自荐信格式呢
2013/11/19 职场文书
幼儿园大班教学反思
2014/02/10 职场文书
计算机毕业生自荐信范文
2014/03/23 职场文书
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
挂靠协议书
2015/01/27 职场文书
楚门的世界观后感
2015/06/03 职场文书
2016教师学习教育法心得体会
2016/01/19 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
SpringBoot集成MongoDB实现文件上传的步骤
2022/04/18 MongoDB