Python中浅拷贝copy与深拷贝deepcopy的简单理解


Posted in Python onOctober 26, 2018

以下是个人对Python深浅拷贝的通俗解释,易于绕开复杂的Python数据结构存储来进行理解!

  1. 高级语言中变量是对内存及其地址的抽象,Python的一切变量都是对象。
  2. 变量的存储采用了引用语义的方式,存储的只是一个变量的值所对应的地址信息。
  3. 变量的每一次初始化(赋值),即将新的内容的地址赋给变量。
  4. 复杂数据结构存储的是各个元素的值得存储位置。
  5. 进行增删改等操作时不改变数据本身的id,改变的各个元素的地址引用。
  6. 改变任何一个拥有相同id的变量时,其他相同id的变量也会相应改变。
  7. copy.copy(object),拷贝的是内嵌套结构的地址引用,当内嵌套结构发生变化时,浅拷贝相应的改变。
  8. copy.deepcopy(object),完全复制与变量相关的数据!跟别的操作不再有关系!

实例:

import copy
li = [4,5]
lts = [1,2,3,li]
lt_copy= copy.copy(lts)
lt_deepcopy = copy.deepcopy(lts)
lts.append(6)
lt_copy.append(7)
print(lts,lt_copy)  #输出[1, 2, 3, [4, 5], 6] [1, 2, 3, [4, 5], 7]
li.append(8)     #内部表格li插入
print(lts,lt_copy,lt_deepcopy)
#输出[1, 2, 3, [4, 5, 8], 6] [1, 2, 3, [4, 5, 8], 7] [1, 2, 3, [4, 5]]
#可以看到当对li操作时,lt_deepcopy不受影响!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
Python开发如何在ubuntu 15.10 上配置vim
Jan 25 Python
python3中str(字符串)的使用教程
Mar 23 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
Apr 23 Python
使用anaconda的pip安装第三方python包的操作步骤
Jun 11 Python
浅谈tensorflow中张量的提取值和赋值
Jan 19 Python
wxPython修改文本框颜色过程解析
Feb 14 Python
Python使用Matlab命令过程解析
Jun 04 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 Python
python对输出的奇数偶数排序实例代码
Dec 04 Python
Jupyter Notebook 安装配置与使用详解
Jan 06 Python
jupyter notebook远程访问不了的问题解决方法
Jan 11 Python
详解在OpenCV中如何使用图像像素
Mar 03 Python
Python分割指定页数的pdf文件方法
Oct 26 #Python
python 将json数据提取转化为txt的方法
Oct 26 #Python
python读取TXT每行,并存到LIST中的方法
Oct 26 #Python
python 循环读取txt文档 并转换成csv的方法
Oct 26 #Python
使用python Fabric动态修改远程机器hosts的方法
Oct 26 #Python
python 处理string到hex脚本的方法
Oct 26 #Python
python3 unicode列表转换为中文的实例
Oct 26 #Python
You might like
模拟xcopy的函数
2006/10/09 PHP
生成sessionid和随机密码的例子
2006/10/09 PHP
几种显示数据的方法的比较
2006/10/09 PHP
分享一个超好用的php header下载函数
2014/01/31 PHP
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
任意位置显示html菜单
2007/02/01 Javascript
js/jQuery简单实现选项卡功能
2014/01/02 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
纯javascript制作日历控件
2015/07/17 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
Element输入框带历史查询记录的实现示例
2019/01/15 Javascript
解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题
2019/10/27 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
javascript实现前端分页功能
2020/11/26 Javascript
python中range()与xrange()用法分析
2016/09/21 Python
Python 中Pickle库的使用详解
2018/02/24 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
全球立体声:World Wide Stereo
2018/09/29 全球购物
实习单位推荐信范文
2013/11/27 职场文书
自荐信封面
2013/12/04 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
护理实习生带教计划
2015/01/16 职场文书
实名检举信范文
2015/03/02 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang
Java中的随机数Random
2022/03/17 Java/Android