python深拷贝和浅拷贝的区别_python 深拷贝与浅拷贝的区别
python中浅拷贝和深拷贝的区别如下:
1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
2. copy.deepcopy 深拷贝 拷贝对象及其子对象
如果拷贝对象是一个一维列表,那么浅拷贝和深拷贝没什么不同,都是重新申请一个新的内存地址。
import copy
list1 = [1,2,3,4]
print(id(list1))
list2 = list1.copy()
print(list2)
print(id(list2))
print(list1 is list2)
list3 = copy.deepcopy(list1)
print(list3)
print(id(list3))
print(list1 is list3)
96011592
[1, 2, 3, 4]
95979528
False
[1, 2, 3, 4]
31271112
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]] #父子对象都不改变
有用教育(上海荣隆教育科技有限公司) 详情加微信13472725250咨询
是一家专业培养资深IT工程师并让学员高薪就业、专注于Linux运维、人工智能的培训机构,公司总部设立在上海,为IT人员提供到岗即用式的实战培训。
有用IT教育培训致力于为国内、国际大中型互联网企业培养市场紧缺的系统工程师、高级架构师、人工智能工程师等高级技术人才、为学员提供定制化IT职业规划方案与咨询服务的培训机构。坚持秉承“为IT人员提供到岗即用式的实战培训”的理念,有用教育以其专业主义精神投入到IT职业教育的领域前沿,不断为学员提供实用有效、创新卓越的知识技能,让学员在实战中进行学习探索、在实战中获得核心竞争力、在实战中实现职业与人生理想。
我们是一支快速成长的高素质创业团队,团队成员均毕业于北京大学、复旦大学、交通大学、日本早稻田大学、MIT、英国帝国理工等全国重点高校。讲师队伍均有大型全球500强企业多年工作经验,理论与实战经验丰富。无论是零基础入门课程,还是高级进阶课程,都能够带给学员定制化的学习体验。有用教育目前提供的课程包括linux系统运维课程,以及就业辅导课程。未来我们将提供更为广泛的IT培训,以及更为高效的就业对接。
“公司在IT培训方面教学质量优秀、教学理念先进、教学方法独特,十分注重理论+实战相结合,全部为名师手把手的带领“课堂即实战式”教学。其中入学测评、直播答疑、布置作业、阶段考试、毕业考试、1v1批改深入广大学员的内心。
公司以“为IT人员提供到岗即用式的实战培训”为使命,坚持“实战培训,到岗即用”,系统传授与时俱进的IT实战技能,提升IT从业人员职业竞争力,为企业输送到岗即用型IT人才。
python深拷贝和浅拷贝的区别_python 深拷贝与浅拷贝的区别相关推荐
- python赋值浅拷贝和深拷贝的区别_python赋值、浅拷贝、深拷贝区别
在写Python过程中,经常会遇到对象的拷贝,如果不理解浅拷贝和深拷贝的概念,你的代码就可能出现一些问题.所以,在这里按个人的理解谈谈它们之间的区别. 一.赋值(assignment) 在<Py ...
- python中raise和raise e区别_python raise和assert的区别
python中raise和assert的区别 一.使用raise抛出异常 python可以自动触发异常,raise(内置函数)的定义为显示的抛出异常,用户可以使用raise进行判断,显式的引发异常,r ...
- python import from区别_python import 与 from .... import ...区别-阿里云开发者社区
在python用import或者from...import来导入相应的模块. 模块其实就一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候, 直接把相应的模块导入到我们的程序 ...
- python编辑器和python解释器的区别_python编译器和解释器的区别
高级语言不能直接被机器所理解执行,所以都需要一个翻译的阶段,解释型语言用到的是解释器,编译型语言用到的是编译器. 编译型语言通常的执行过程是:源代码--预处理器--编译器--目标代码--链接器--可执 ...
- python str和repr的区别_python str与repr的区别
尽管str(),repr()和"运算在特性和功能方面都非常相似,事实上repr()和"做的是完全一样的事情,它们返回的是一个对象的"官方"字符串表示,也就是说绝 ...
- python raise和except区别_python raise和assert的区别
python中raise和assert的区别 一.使用raise抛出异常 python可以自动触发异常,raise(内置函数)的定义为显示的抛出异常,用户可以使用raise进行判断,显式的引发异常,r ...
- python版本之间的区别_Python各版本之间的区别
Python各版本之间的区别 发布时间:2020-06-17 14:22:08 来源:亿速云 阅读:161 作者:鸽子 Python发展至今有哪些版本和各版本的区别是: 一.系统区别: 1.Downl ...
- python中is和 的区别_Python中is和==的区别详解
Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么. 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识) ...
- python元组和列表的联系_Python元组和列表的区别
元组和列表同属序列类型,且都可以按照特定顺序存放一组数据,数据类型不受限制,只要是 Python 支持的数据类型就可以.那么,元组和列表有哪些区别呢? 元组和列表最大的区别就是,列表中的元素可以进行任 ...
- python中is和 的区别_Python中is和==的区别
""" is和 ==的区别 """ a = 'abc' b = 'abc' print("都是字符串-a is b--" ...
最新文章
- 【点云重采样Resampling】Python-pcl 基于多项式平滑点云及法线估计的曲面重建
- BCH专属“谷歌地图”凸显BCH魅力
- 妙用SQL Server聚合函数和子查询迭代求和
- 推荐八款.Net优秀的开源CMS 内容管理系统
- 使用 acme.sh 获取网站证书并配置https访问
- 浅谈C语言的基本数据类型
- 高级数据结构与算法 | LFU缓存机制(Least Frequently Used)
- 如何通过 C# 比较两幅图片的相似度?
- .net 日期总结,用于业务时间查询
- 摘:多线程和异步的区别
- 【Spark】Spark Class is not registered joins UnsafeHashedRelation kryo
- linux根目录数量限制,windows,linux文件夹下文件上限最大个数
- CentOS安装Etcd
- 《简明 Python 教程》笔记-----面向对象及系统相关
- 蓝桥杯---2012--比酒量(暴力)
- 科蓝ichat泡分机器人 官网
- 技巧:Eclipse阿里代码规范插件
- lcd驱动芯片测试软件,LCD Driver IC测试方法及其挑战
- android timepicker分割线颜色,Android TimePicker 的使用
- gmail 设置 smtp_如何在Linux上使用Gmail或SMTP设置电子邮件警报
热门文章
- Unity 之圆环算法
- WinForm中显示韩语,韩文
- Solaris做desktop必装的10个软件
- join原理、join算法
- java线程状态、新建状态、运行状态、阻塞状态、等待阻塞、同步阻塞、其他阻塞、死亡状态
- loss 加权_Multi-Similarity Loss使用通用对加权进行深度度量学习-CVPR2019
- 【Spring-tx】ProxyTransactionManagementConfiguration类
- SpringMVC全局异常处理机制常见问题及底层实现分析
- MySQL中的时间函数
- 在java开发中关于class.getResourceAsStream(String name)与 class.getClassLoader().getResourceAsStream(String