python中的“赋值与深浅拷贝”
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中的赋值和深浅拷贝
python中,A object = B object 是一种赋值操作,赋的值不是一个对象在内存中的空间,而只是这个对象在内存中的位置 . 此时当B对象里面的内容发生更改的时候,A对象也自然而然的 ...
- python中的赋值与深浅拷贝的区别
import copy lt = [1, 2, [3, 4]] # 赋值会增加一个引用,访问的都是同一数据 # lt2 = lt # 浅拷贝:只拷贝对象本身,里面的元素只会增加一个引用 lt2 = l ...
- python中的赋值与深浅拷贝
Python当中对于拷贝,分为两种类型.一种是数字和字符串,另一种就是列表.元组.字典等其他类型了. 一.数字和字符串的拷贝 1.赋值 举个栗子: a1 = 123123 a2 = 123123 # ...
- Python中的 set 与 深浅拷贝
字符串 join() 格式: "拼接的东西".join(可迭代对象) 可以加列表转换成字符串 lis = ['a','b','c','d'] s = "//" ...
- python列表中的赋值与深浅拷贝
首先创建一个列表 a=[[1,2,3],4,5,6] 一.赋值 a=[[1,2,3],4,5,6]b=aa[0][1]='tom'print(a)print(b)结果: [[1, 'tom', 3], ...
- python中set(集合),深浅拷贝以及一些补充知识点
1.set集合 特点:无序,不重复,元素必须可哈希(不可变) 作用:去重复 本身是可变的数据类型.有增删改查操作.{集合的增删改查操作应用较少,这里不做详细介绍了(这里的增有一个方法update注意这 ...
- python——赋值与深浅拷贝
初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一——python的变量及其存储 在详细的了解python中赋 ...
- 【python】变量的赋值、深浅拷贝
python——赋值与深浅拷贝 https://www.cnblogs.com/Eva-J/p/5534037.html 啥都不说,看这个博主的文章!
- Python中的赋值和拷贝
赋值 在python中,赋值就是建立一个对象的引用,而不是将对象存储为另一个副本.比如: >>> a=[1,2,3] >>> b=a >>> c= ...
随机推荐
- Python3 os.path() 模块笔记
os.path 模块主要用于获取文件的属性. 以下是 os.path 模块的几种常用方法: 方法 说明 os.path.abspath(path) 返回绝对路径 os.path.basename(pa ...
- 文件系统(01):基于SpringBoot框架,管理Excel和PDF文件类型
本文源码:GitHub·点这里 || GitEE·点这里 一.文档类型简介 1.Excel文档 Excel一款电子表格软件.直观的界面.出色的计算功能和图表工具,在系统开发中,经常用来把数据转存到Ex ...
- Android和servlet通过json完成登录
1.主要过程:Android端发送json数据,servlet接收后解析json数据,通过连接数据库比较并返回json数据到Android端.整个效果: 2.Android端网络连接使用OKHttp开 ...
- 3、MySQL 索引失效的场景
索引失效的场景: 1.没有 where 条件 直接看 SQL 语句 2.where 条件中所在的列没有建立索引 show index from t; 3.从表中取得数据超过某个阈值.通常认为是 ...
- 暑假第三周总结(学习HDFS操作方法)
本周由于自己出去玩,以及家里的各种事也没好好看书,就对HDFS的一些常用的shell命令进行了学习与应用,观看了林子雨老师关于HDFS的视频,对HDFS的一些存储的原理.规则进行了一定的了解.对uba ...
- 实验17:NAT
实验14-1:静态NAT 配置 Ø 实验目的通过本实验可以掌握(1)静态NAT 的特征(2)静态NAT 基本配置和调试 Ø 拓扑结构 实验步骤n 步骤1:配置路由器R1 提供NAT ...
- 编译出适合自己的nginx
上面是解压后的nginx源码 auto目录 上面的cc目录用于编译,lib库 os目录对系统进行判断,其他所有文件都是辅助conf脚本执行 判定nginx支持哪些模块,当前操作系统有哪些特性. CHA ...
- 关于将笔记本电脑作为wifi热点的详细步骤
常规做法直接度娘.如果出现无法打开wifi功能,可找对应解决方法. 1.先检查网卡是否支持承载网络,检查方法为在cmd中使用管理员权限运行,输入netsh wlan show drivers.查看支持 ...
- SpringBoot Jpa 自定义查询
SpringBoot Jpa 自定义查询 持久层Domain public interface BaomingDao extends JpaRepository<BaomingBean,Inte ...
- ubuntu docker中crontab任务不执行的问题
problem of task of crontab in docker of ubuntu do not working! 由于各种原因,要在Ubuntu docker上部署crontab任务,如 ...