【Python 必会技巧】copy 模块中 copy() 与 deepcopy() 函数的区别

Python 中赋值语句不复制对象,而是在目标和对象之间创建绑定关系。对于自身可变或者包含可变项的集合对象,开发者有时会需要生成其副本用于改变操作,进而避免改变原对象。copy 模块提供了通用的浅层复制 copy() 和深层复制 deepcopy() 操作。

  • copy() 仅复制对象本身,而不对其中的子对象进行复制,如果对原子对象进行修改,那么浅层复制之后的对象也会随着修改。

  • deepcopy() 是真正意义上的复制,即重新开辟一片空间,经常说的复制实际上就是 deepcopy,深层复制之后的对象不受原对象的影响,无论原对象发生什么修改,深层复制的对象都不会发生改变。

>>> import copy
>>> list1 = [1, 2, [3, 4], 5]
>>> list2 = copy.copy(list1)
>>> list3 = copy.deepcopy(list1)
>>> list2 == list3
True
>>> list2 is list3
False

以上两个列表 list2 和 list3 分别经过了浅层复制和深层复制,虽然值是一样的,但是本质上并不是同一个列表

>>> import copy
>>> list1 = [1, 2, [3, 4], 5]
>>> list2 = copy.copy(list1)
>>> list3 = copy.deepcopy(list1)
>>> list1[2][0] = 3333
>>> list1
[1, 2, [3333, 4], 5]
>>> list2
[1, 2, [3333, 4], 5]
>>> list3
[1, 2, [3, 4], 5]

将原列表的子对象 [3, 4] 改成 [333, 4],可以看到浅层复制后 list2 的值也会改变,而深层复制后 list3 的值并不会改变。

简单来说:

  • 浅层复制 copy():复制父对象,子对象仍然使用引用的方式;
  • 深层复制 deepcopy():复制了对象和对象的所有子对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】Dynamics CRM 365零基础入门学习(四)Dynamics 使用profiler插件调试流程

今天我们介绍一种在dynamics开发中经常会用到的调试操作,其中一种调试方式即是profile调试。以下是我在项目开发中记录的调试流程,可供参考使用。 1、打开插件注册工具,会看到install Profile,点击即可安装。 2、在插件注册器中选择要调试的s…

【Python 必会技巧】利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题

先举个例子,分别以不指定编码、指定编码为 utf-8、指定编码为 utf-8-sig 三种方式来做比较,再将写入 csv 文件和 txt 文件来做个对比 一、不指定编码方式,直接存入 csv 文件 import csvwith open(test.csv, w) as fp:writer csv.writer(fp)…

【转】Dynamics CRM 365零基础入门学习(五)权限管理

一:安全角色 Microsoft Dynamics 365中的安全角色是各种实体的特权和访问级别矩阵。 它们根据其功能分组在不同的选项卡下。 这些组包括:核心记录,营销,销售,服务,业务管理,服务管理&#xff0…

【Python 必会技巧】使用 zip() 函数对序列进行压缩和解压操作

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。 利用 * 号操作符,可以将元组解压为列表。 zip…

【转】Dynamics CRM 365零基础入门学习(七)Dynamics 365 DataMigrationUtility tool使用

SDK里有个工具叫DataMigrationUtility,这个工具适合两个CRM系统之间的数据迁移。例如:在项目上线之初会做数据初始化的工作,一般这个工作会在UAT开始前完成,当UAT完成之后再把这部分初始化数据迁移到生产环境。那我费了半天劲把数…

【Python 标准库学习】日期和时间处理库 — datetime

欢迎加入 Python 官方文档翻译团队:https://www.transifex.com/python-doc/ datetime 模块提供了可以通过多种方式操作日期和时间的类。在支持日期时间数学运算的同时,实现的关注点更着重于如何能够更有效地解析其属性用于格式化输出和数据操作。 datet…

【Python 标准库学习】数据科学计算库 — math

欢迎加入 Python 官方文档翻译团队:https://www.transifex.com/python-doc/ math 模块官方文档:https://docs.python.org/3/library/math.html math 模块包含的函数按照用途可分为:数论与表示函数、幂函数与对数函数、三角函数、角度转换、双…

【转】Dynamics 365中的应用程序介绍

本人微信和易信公众号:微软动态CRM专家罗勇 ,回复275或者20180630可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me 。 Dynamics 365引入了应用程序,为啥…

【Python 标准库学习】伪随机数生成库 — random

欢迎加入 Python 官方文档翻译团队:https://www.transifex.com/python-doc/ 随机函数在很多科学计算中都会用到,比如生成一系列随机数来计算平均值、高斯分布、伽马分布、贝塔分布、对数正态分布等。 几乎所有模块函数都依赖于基本函数 random() &#…

【转】Dynamics 365中配置和使用文件夹级别的跟踪(folder-level tracking)

本人微信和易信公众号:微软动态CRM专家罗勇 ,回复274或者20180630可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me 。 Dynamics 365与Office 365可以方便紧密的集成…

【Python 标准库学习】多种操作系统接口和常用路径操作库 — os 与 os.path

欢迎加入 Python 官方文档翻译团队:https://www.transifex.com/python-doc/ os 模块简介:主流操作系统有 Windows、UNIX、Mac OS 等,os 模块为多种操作系统的访问提供了相关功能的支持,涉及对文件相关操作功能的实现、系统访问 Pa…

【转】Dynamics 365Online 如何启用手机端APP的离线功能

隐约记得365自带的手机app是支持离线功能的,但实际尝试后发现不行,断开网络后直接提示下图这样,无法操作了 然后就去查询了下最新版的Online设置离线的方式,步骤还挺多的,本篇即来分享下 第一步,首先要确定…

【Python 标准库学习】系统相关的参数和函数库 — sys

欢迎加入 Python 官方文档翻译团队:https://www.transifex.com/python-doc/ sys 模块提供了与 Python 解释器紧密相关的一些变量和函数,这些变量可能被解释器使用,也可能由解释器提供 sys 模块官方文档:https://docs.python.org/…

【转】Microsoft Teams快速上手系列-01Teams的前世今生

说到Teams,这到底是一个什么产品?有人说它是团队协作工具,有人说它是云视频系统,有人说它是Hub,还有人说它是微软有史以来发展最快的一个产品,还有人说它完全是一个高效办公神器。其实都是对的。 Teams集成…

【Python 标准库学习】时间相关的函数库 — time

欢迎加入 Python 官方文档翻译团队:https://www.transifex.com/python-doc/ time 模块提供了各种时间相关的函数,该模块中的大多数函数是调用了所在平台 C 语言库的同名函数,这些函数的语义因平台而异,可能会在不同的平台有不同的…

【转】响应式详解

一两年以前,我发现,很多人都被响应式搞得很懵逼。 现在,我依然发现,还是有很多人,依旧被响应式搞得很懵逼。 所以,我也很懵逼。 到底是哪个环节出了问题,让这么多学习前端的同学对于这个响应…

【Python 标准库学习】容器数据类型库 — collections

欢迎加入 Python 官方文档翻译团队:https://www.transifex.com/python-doc/ collections 模块实现了特定目标的容器,以提供Python标准内建容器 dict , list , set , 和 tuple 的替代选择。 collections 模块官方文档:https://docs.python.or…

【Python 标准库学习】安全哈希与摘要算法库 — hashlib

欢迎加入 Python 官方文档翻译团队:https://www.transifex.com/python-doc/ hashlib 模块针对不同的安全哈希和消息摘要算法实现了一个通用的接口。提供了常见的摘要算法,如MD5,SHA1等等。 摘要算法又称哈希算法、散列算法,摘要算…

【Python 必会技巧】[i for i in range(1,10)] — 列表解析式,列表中使用 for 循环

经常会看到类似于 [i for i in range(1,10)] 的表达式,这种表达式称为列表解析(List Comprehensions),类似的还有字典解析、集合解析等等。 列表解析式是将一个列表(实际上适用于任何可迭代对象)转换成另一…

【转】Microsoft Teams 常见问题

作者:Zimu 链接:https://www.zhihu.com/question/52246335/answer/244877022 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 功能还是很全的,能和skype、onedrive、yammer、shar…