Python中,赋值与拷贝(深/浅拷贝)之间是有差异的,这主要源于数据在内存中的存放问题,本文将对此加以探讨。

1 赋值(添加名字)

赋值不会改变内存中数据存放状态,比如在内存中存在一个名为data的数据,此时若执行语句data_01 = data,则现在该份数据有了两个名称(data和data_01),其余都不发生改变,使用任何一个名称对数据进行操作,那么用另外一个名称拿数据时,数据会呈现之间发生的改变。示例如下:

图中,给列表分配了两个名称a与b,对a做改变时b会同样改变,对b做改变时a也会同样改变,a,b指向内存中同一块区域。

拷贝

无论是哪种拷贝,数据会重新生成一份放置在另一块内存区域,内存存放状态会因此发生改变,但重新生成的数据会因为深浅拷贝不同而有所不同。

2 浅拷贝(浅层复制)

上图中,虽然b复制了a的数据存放到另一块内存区域,但复制的程度有限,只达到列表的第一层,第二层的数据存放状态并没有改变。

3 深拷贝(深层复制)

深度拷贝则是完完全全地复制,有几层则拷几层。

下面以一个三层的列表为例:

小结

对于python中的这三种数据复制机制,如果能够从内存层面理解,则会非常容易;这三种复制机制也会反映在一些第三方库中,如numpy、pandas等,对于不同的数据分析情况,要有选择地调取合适的复制机制。

python中赋值不正确的_python中的“赋值与深浅拷贝”相关推荐

  1. python中赋值不正确的_python中关于赋值、浅拷贝与深拷贝的问题

    Python中关于对象复制有三种类型的使用方式,赋值.浅拷贝与深拷贝.他们既有区别又有联系,刚好最近碰到这一类的问题,研究下. 一.赋值 在python中,对象的赋值就是简单的对象引用,这点和C++不 ...

  2. Python基础_第3章_Python中的循环结构

    Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...

  3. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  4. python round(1234.5678、-2)_Python中你不知道的特性

    内置函数print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) 本函数是实现对象以字符串表示的方式格式化输出到流文件对象fil ...

  5. python深复制与浅复制_Python中的深拷贝和浅拷贝详解

    要说清楚Python中的深浅拷贝,需要搞清楚下面一系列概念: 变量-引用-对象(可变对象,不可变对象)-切片-拷贝(浅拷贝,深拷贝) [变量-对象-引用] 在Python中一切都是对象,比如说:3, ...

  6. python实例属性与类属性_Python中的类属性和实例属性引发的一个坑-续

    上篇文章Python 中的类属性和实例属性,我们探讨了类属性和实例属性引发的一个小坑.总结了类属性和实例属性的区别如下:类属性可以被类和实例调用,实例属性只能被实例调用 类属性不会随着实例的调用而改变 ...

  7. python计算数组元素的和_python中数组的运算

    Python中进行数组的运算需要调用NumPy包. 其官网是:http://www.numpy.org/​www.numpy.org NumPy是Python语言的一个扩充程序库.它支持高级大量的维度 ...

  8. python字典是什么的集合_Python中的字典和集合

    文章目录字典1.介绍 2.创建字典 3.字典内元素的访问 4.字典元素的添加.修改.删除 5.关于字典的其它操作 6.字典存储底层原理 集合1.介绍 2.相关操作 3.集合元素的添加 4.移除元素 字 ...

  9. python中的命名空间指什么_python中命名空间

    原文章 由一个例子到python的名字空间 .这篇文章对python的命名空间做出了非常好的介绍,这里是我自己的一些理解. 例子1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

最新文章

  1. 跟我学Springboot开发后端管理系统8:Matrxi-Web权限设计实现
  2. 5912. 每一个查询的最大美丽值
  3. ddr2的上电顺序_关于内存的插入顺序的问题
  4. [置顶] Android adb root权限
  5. Mycat监控_监控平台安装zookeeper_作为配置中心注册发现用---MyCat分布式数据库集群架构工作笔记0036
  6. FCKEditor报java.lang.NullPointerException
  7. linux运维之网络配置
  8. 微信隐藏功能关闭X5内核
  9. Android开发中导入字体库
  10. 微软为什么总招人黑?
  11. 误差柱状图的三种实现方法
  12. 云班课python答案_云班课测试题答案公众号
  13. 负数补码(16进制转10进制的负数)
  14. ffmpeg图片+音频合成视频
  15. 迅为i.MX6ULL终结者Mfgtools修改单独只烧写Uboot,内核,文件系统
  16. 33MW太阳能厂动工 日本福岛开启复兴之路
  17. 【苹果推iMessage】软件安装通过ApplseScript节制iMessage客户端
  18. 取消计算机关机,取消电脑自动关机
  19. Android iOS APPUI设计规范实例(详细的UI设计方法)
  20. 申请邓氏编码流程(创建苹果公司开发者账号必经之路~)

热门文章

  1. fatal error: nsync_cv.h: No such file or directory
  2. Only call `sigmoid_cross_entropy_with_logits` with named arguments解决
  3. 使用Python和OpenCV检测图像中的物体并将物体裁剪下来
  4. Android图像处理整理
  5. 基于直方图均衡化的水下激光图像处理(MATLAB仿真)
  6. linux编译部署,linux下编译并部署Apache Apollo
  7. 阿里云的java规范_阿里JAVA开发强制要求的15条并发处理规范,切记
  8. mysql 去空格_MySQL安装与步骤
  9. java异常详细讲解_java异常的讲解
  10. 解析mysqlbinlog日志_每日学点---Mysql的binlog日志解析导出