当前位置: 首页 > news >正文

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.dtcms.com/a/326447.html

相关文章:

  • 01-spring-手写spring-demo实现基础的功能
  • SAM2的应用
  • 机器学习中数据集的划分难点及实现
  • 比例份额调度
  • CV 医学影像分类、分割、目标检测,之【血红细胞分类】项目拆解
  • n8n中调用playwright-mcp 项目
  • LeetCode151~188题解
  • C++ 流式处理字符串
  • C语言变量的声明和定义有什么区别?
  • UE 手柄点击UI 事件
  • 长难句lesson1
  • PPIO上线智谱GLM-4.5V
  • 【stm32】EXTI外部中断
  • QT聊天项目DAY18
  • Prompt Engineering 最佳实践:让AI输出更精准的核心技巧
  • HIS系统:医院信息化建设的核心,采用Angular+Java技术栈,集成MySQL、Redis等技术,实现医院全业务流程管理。
  • LS1043A+AQR115C万兆网口调试
  • 机器学习第九课之DBSCAN算法
  • 下一代防火墙组网全解析
  • Linux下安装jdk
  • 从零构建企业级K8S:高可用集群部署指南
  • 简单了解MongoDB数据存储
  • 计算机网络---交换机
  • Excel导入mysql,带小数点如何解决?
  • 物联网通讯协议-MQTT、Modbus、OPC
  • 支持向量机SM
  • 人工智能-python-机器学习-线性回归与梯度下降:理论与实践
  • 大屏幕自适应
  • 基于FPGA的热电偶测温数据采集系统,替代NI的产品(三)测试
  • C++ STL | STL迭代器(lterator)