python之浅拷贝深拷贝

文章目录

  • 潜拷贝(shallow copy)
  • 深拷贝(deep copy)

总结一下python的浅拷贝和深拷贝.

潜拷贝(shallow copy)

python中潜拷贝指的是:构造一个新的复合对象,然后将原对象中的对象引用插入其中
平常开发过程中潜拷贝是比深拷贝更常见的场景.
比如编程中使用到的一些基本的复合类型(list, dict等)是自带shallow copy函数的,比如下面的例子

from collections import dequel = [1,2,3]
l.copy()
s = set([1,2,3])
s.copy()
d = {'a':1,'b':2}
d.copy()
q = deque([1, 2, 3])
q.copy()

python官方有copy这个内置的模块来完成潜拷贝和深拷贝.如下例子

from collections import deque
import copy
from dataclasses import dataclass@dataclass
class Test:name: strage: intdef test2():l = [Test(name='a', age=1), Test(name='b', age=2)]l_copy = copy.copy(l)print(id(l))print(id(l_copy))l[0].name = 'a_update'print(l_copy[0].name == l[0].name)if __name__ == '__main__':test2()

输出

138121816082688
138121816084736
True

列表类型潜拷贝还可以使用分片语法比如l_copy = l[:]也是潜拷贝.

深拷贝(deep copy)

python中深拷贝是指:构造一个新的复合对象,然后递归地插入原对象中对象的副本
使用copy.deepcopy实现,如下例子:

from collections import deque
import copy
from dataclasses import dataclass@dataclass
class Test:name: strage: intdef test3():l = [Test(name='a', age=1), Test(name='b', age=2)]l_copy = copy.deepcopy(l)print(id(l))print(id(l_copy))l[0].name = 'a_update'print(l_copy[0].name == l[0].name)if __name__ == '__main__':test3()

输出结果:

123638090725824
123638090725952
False

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

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

相关文章

普通大学本科生如何入门强化学习?

问题:你平时是如何紧跟大型语言模型和智能体技术前沿的?有哪些具体的学习和跟踪方式?回答:我会通过“输入-内化-实践”结合的方式跟踪前沿。首先,学术动态方面,每天花10分钟浏览arXiv的http://cs.CL和http://cs.AI板块&#xff0c…

新手向:Python实现数据可视化图表生成

Python数据可视化入门:从零开始生成图表数据可视化是数据分析过程中不可或缺的关键环节,它通过将抽象的数字信息转化为直观的图形展示,帮助分析师和决策者更快速、更准确地发现数据中隐藏的模式、规律和发展趋势。在当今大数据时代&#xff0…

VBA即用型代码手册:计算选择的单词数Count Words in Selection

我给VBA下的定义:VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率,而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。作为我的学员要利用我的积木编程思想,积木编程最重要的是积木如何搭建及…

DNS(域名系统)

分层结构根域名(ipv4,13台),二级域名,三级域名……相关记录A将域名解析为ipv4地址AAAA将域名解析为ipv6地址MX指名该区域为邮件服务区PTR反向查询将主机名解析为域名NS记录服务器的名字CNAME别名查询方式递归查询迭代查…

【大模型】强化学习算法总结

角色和术语定义 State:状态Action:动作Policy/actor model:策略模型,用于决策行动的主要模型Critic/value model:价值模型,用于评判某个行动的价值大小Reward model:奖励模型,用于给…

基于梅特卡夫定律的开源链动2+1模式AI智能名片S2B2C商城小程序价值重构研究

摘要:梅特卡夫定律揭示了网络价值与用户数量的平方关系,在互联网经济中,连接的深度与形式正因人的参与发生质变。本文以开源链动21模式、AI智能名片与S2B2C商城小程序的协同应用为研究对象,通过实证分析其在社群团购、下沉市场等场…

Ubuntu22.04安装CH340驱动及串口

一、CH340驱动安装 1.1 查看USB设备能否被识别 CtrlAltT打开终端: lsusb 插入设备前: 插入设备后: 输出中包含ID 1a86:7523 QinHeng Electronics CH340 serial converter的信息,这表明CH340设备已经被系统识别。 1.2 查看USB转串…

CPU缓存(CPU Cache)和TLB(Translation Lookaside Buffer)缓存现代计算机体系结构中用于提高性能的关键技术

CPU缓存(CPU Cache)和TLB(Translation Lookaside Buffer)缓存是现代计算机体系结构中用于提高性能的关键技术。它们通过减少CPU访问数据和指令的延迟来提高系统的整体效率。以下是对这两者的详细解释: 1. CPU 缓存 CPU…

唐扬·高并发系统设计40问

课程下载:https://download.csdn.net/download/m0_66047725/91644703 00开篇词 _ 为什么你要学习高并发系统设计?.pdf 00开篇词丨为什么你要学习高并发系统设计?.mp3 01 _ 高并发系统:它的通用设计方法是什么?.pdf …

基于Spring Data Elasticsearch的分布式全文检索与集群性能优化实践指南

基于Spring Data Elasticsearch的分布式全文检索与集群性能优化实践指南 技术背景与应用场景 随着大数据时代的到来,海量信息的存储与检索成为各类应用的核心需求。Elasticsearch 作为一款分布式搜索引擎,凭借其高可扩展、高可用和实时检索的优势&#x…

Linux系统编程——基础IO

一些前置知识:文件 属性 内容文件 分为 打开的文件、未打开的文件打开的文件:由进程打开,本质是 进程与文件 的关系;维护的文件对象先加载文件属性,文件内容一般按需加载未打开的文件:在永久性存储介质 —…

力扣164:最大间距

力扣164:最大间距题目思路代码题目 给定一个无序的数组 nums,返回 数组在排序之后,相邻元素之间最大的差值 。如果数组元素个数小于 2,则返回 0 。 您必须编写一个在「线性时间」内运行并使用「线性额外空间」的算法。 思路 这道题的思路…

Redis类型之Hash

1.hash常用操作 这里还是要强调,redis的类型指的是value的类型。故而这里的hash是把key这一层组织完成以后,到了value这一层,value的其中一种类型还可以是hash。1.1 HSET 和 HGETHSET:设置hash类型的keyHSET key field value [fie…

Apache Pulsar性能与可用性优化实践指南

Apache Pulsar性能与可用性优化实践指南 一、技术背景与应用场景 随着微服务、实时计算和大数据平台的普及,消息系统承担了海量数据的传输与解耦任务。Apache Pulsar作为新一代分布式消息与流处理系统,拥有多租户、持久化存储和灵活一致性的特点&#xf…

工单分类微调训练运维管理工具原型

简述需求进展之前,我尝试用Longformer模型来训练工单分类系统,但问题很快就暴露出来:Longformer训练时间长得让人抓狂,每次训练只能针对一个租户的数据,无法快速适配多个租户的需求。切换一个使用相同标签的租户还能够…

@CacheConfig​​当前类中所有缓存方法详解

CacheConfig​​当前类中所有缓存方法详解在 Spring Cache 抽象中,CacheConfig 是一个​​类级别注解​​,用于为​​当前类中的所有缓存方法(如 Cacheable、CachePut、CacheEvict)提供默认配置​​。其核心作用是​​避免在每个方…

正确使用SQL Server中的Hint(10)—Hint简介与Hint分类及语法(1)

9.5. 正确使用Hint 9.5.1. Hint简介 与Oracle等其他关系库类似,SQL Server中,也提供了诸多Hint用于支持SQL调优,那就是通过正确应用Hint技术,可以指示CBO为SQL语句产生和选择最合理而高效的查询计划。Hint确实可以做到很容易的对CBO产生影响,但因为多数场景中,CBO都能为…

Redis的分布式序列号生成器原理

Redis 分布式序列号生成器的核心原理是利用 Redis 的原子操作和高性能特性,在分布式系统中生成全局唯一、有序的序列号。其设计通常结合业务需求(如有序性、长度限制、高并发),通过 Redis 的原子命令(如 INCR、INCRBY&…

2025年SEVC SCI2区,基于深度强化学习与模拟退火的多无人机侦察任务规划,深度解析+性能实测

目录1.摘要2.问题定义3.SA-NNO-DRL方法4.结果展示5.参考文献6.算法辅导应用定制读者交流1.摘要 无人机(UAV)因其高自主性和灵活性,广泛应用于侦察任务,多无人机任务规划在交通监控和数据采集等任务中至关重要,但现有方…

汽车娱乐信息系统域控制器的网络安全开发方案

引言1.1 项目背景随着汽车行业的快速发展和智能化、网联化的趋势日益明显,汽车娱乐信息系统(In-Vehicle Infotainment System,IVIS)已经成为现代汽车的重要组成部分。汽车娱乐信息系统不仅提供了丰富的多媒体功能,如音…