python深浅拷贝的底层理解_理解python中的深拷贝与浅拷贝
python中浅拷贝和深拷贝的区别如下:
1. copy.copy 等价于切片[:] 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。2个列表是不同的,但是子列表指向的仍然是同一个地址
2. copy.deepcopy 深拷贝 拷贝对象及其子对象,确保2个列表不会影响对方,包括子列表
import copy
list1 = [1,2,3,4]
print(id(list1)) #96011592
list2 = list1.copy()
print(list2) #[1, 2, 3, 4]
print(id(list2)) #95979528
print(list1 is list2) #False
list3 = copy.deepcopy(list1)
print(list3) #[1, 2, 3, 4]
print(id(list3)) #31271112
print(list1 is list3) #False
因此,list1的改变不会影响到list2与list3。但是对于复杂一些的列表,例如嵌套列表、字典嵌套列表。浅拷贝与深拷贝两者便展示出完全不同的结果。
import copy
list1 = [1,2,3,4,[5,6]]
print('list1的id:',id(list1))
print('list1第4个元素的id:',id(list1[4]))
#浅拷贝
list2 = list1.copy()
print(list2)
print('list2的id:',id(list2))
print('list2第4个元素的id:',id(list2[4]))
#深拷贝
list3 = copy.deepcopy(list1)
print(list3)
print('list3的id:',id(list3))
print('list3第4个元素的id:',id(list3[4]))
#改变list1中的元素
list1[2] = 7
list1[4][1] = 8
print('list1:',list1)
print('list2:',list2)
print('list3:',list3)
#运行结果
list1的id: 95979528
list1第4个元素的id: 96011592
[1, 2, 3, 4, [5, 6]]
list2的id: 40773832
list2第4个元素的id: 96011592 #子对象的id值一样,表示浅拷贝没有拷贝对象,只是使用了列表的引用
[1, 2, 3, 4, [5, 6]]
list3的id: 96023432
list3第4个元素的id: 40773704
list1: [1, 2, 7, 4, [5, 8]]
list2: [1, 2, 3, 4, [5, 8]] #父对象不变,子对象变
list3: [1, 2, 3, 4, [5, 6]] #父子对象都不改变
python深浅拷贝的底层理解_理解python中的深拷贝与浅拷贝相关推荐
- python小学生能学嘛_小学生都能学会的python(深浅拷贝)
小学生都能学会的python(深浅拷贝) join() 把列表中的每一项用字符串拼接起来 # lst = ["汪峰", "吴君如", "李嘉欣&quo ...
- Python深浅拷贝!
Python深浅拷贝! 今天博主跟大家聊一聊如何使用Python深浅拷贝!不喜勿喷,如有建议欢迎补充.讨论! 关于安装和汉化可以观看博主的这篇文章<下载安装及汉化 >以及Python系列: ...
- python怎么避免浅拷贝_详谈Python中的深拷贝和浅拷贝
在平时工作中,经常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题.为了防止数据被修改,就需要在传递一个副本,即使副本被修改,也不会影响原数据的使用.为了生成这个副本,就产生了拷贝. ...
- vb.net中递归退到最外层_面试题被问到再也不慌,深究JavaScript中的深拷贝与浅拷贝...
" 点个关注,养成习惯,带你python爬虫的过程中学习前端 " JavaScript中的深拷贝和浅拷贝是前端面试中频繁被问到的一道题, 于是我也自己去查阅了一些资料, 然后动手敲 ...
- python中的深拷贝_Python中的深拷贝和浅拷贝
前言:在认识深浅拷贝的时候,先了解python中的可变类型与不可变类型. 以及 python中的传参到底是传递值还是传递引用(内存地址) python中的可变数据类型主要有 :(列表,字典) 指的是在 ...
- python中的深拷贝与浅拷贝
浅拷贝的时候,修改原来的对象,深拷贝的对象不会发生改变. 对象的赋值 对象的赋值实际上是对象之间的引用:当创建一个对象,然后将这个对象赋值给另外一个变量的时候,python并没有拷贝这个对象,而只是拷 ...
- python中关于深拷贝和浅拷贝的详解
python中关于深拷贝和浅拷贝的详解 概述 在python的语法中,有两种变量的拷贝方式 一种是深拷贝,一种是浅拷贝 我们先说深拷贝 语法 这里需要通过导入系统的copy模块中的deepcopy才可 ...
- python深拷贝实现原理_从底层剖析Python深浅拷贝
拷贝的用途 拷贝就是copy,目的在于复制出一份一模一样的数据.使用相同的算法对于产生的数据有多种截然不同的用途时就可以使用copy技术,将copy出的各种副本去做各种不同的操作. 值得一提的是绝大部 ...
- python深浅拷贝 面试_[面试题二]百度资深面试官:python赋值、浅拷贝与深拷贝
内存管理相关的面试一直是面试中的重点考察内容.赋值.深拷贝与浅拷贝是日常编码工作中,需要时常关注的知识点.不小心可是会写出bug哦- 赋值 先来看一段代码,下面两段代码的输出结果会是什么呢? # ca ...
最新文章
- java 获取linux mac_java在linux获得ip地址和mac
- enumeration学习
- UA MATH564 概率论VI 数理统计基础4 t分布
- vmware--查看链接克隆依赖关系
- qsettings mysql_qt连接mysql
- Linux学习笔记5
- 目前服务器操作系统版本,目前服务器操作系统版本号
- js 获取元素文本_可能是最全的“文本溢出截断省略”方案合集
- 项目笔记:分层模型建立
- 单表60亿记录等大数据场景的MySQL优化和运维之道
- 上拉电阻和下拉电阻的选型和计算
- 信用卡积分能兑换现金,靠谱吗?
- 《iOS移动开发从入门到精通》图书连载2:如何成为一名iOS开发者
- 前端技术之babel转码器
- 如何守住项目管理的质量“底线”?
- 常见字读音(粤语)---(3)
- 过来,带你了解什么是物联网?
- IoT开源平台Thingsboard二次开发研究
- 如何放慢selenium的运行速度
- mysql分页语句解释,mysql语句分页limit什么意思
热门文章
- c++ 绘制函数图像_图像轮廓和分水岭算法
- java在进行修改时报400_java开发注册群组报错400
- python怎么设置颜色深浅变化_Python赋值、深浅copy
- ui设计现状与意义_想转行UI设计?你必须要了解以下内容
- 这个陶瓷电阻烙铁架不错哦,最新一期的电子趣事分享给大家
- 国产嵌入式操作系统发展思考
- docker 删除_docker 批量删除镜像
- java 在线支付_java如何实现在线支付讲解
- python api是什么_python – 如何处理API响应
- java char指针数组_sizeof与strlen使用,字符串指针数组