Python 中浅拷贝(copy)和深拷贝(deepcopy)

1. 浅拷贝

  • 它创建一个新的对象,但对于原始对象内的子对象(如列表中的嵌套列表),只是复制了引用。例如:

import copy original_list = [1, 2, 3]

shallow_copied_list = copy.copy(original_list)

original_list.append(4)

print("原始列表:", original_list)

print("浅拷贝列表:", shallow_copied_list)

 

2. 深拷贝

  • 会递归地复制原始对象及其所有子对象,创建出完全独立的副本。
  • 比如:

original_nested_list = [[1, 2], 3]

deep_copied_nested_list = copy.deepcopy(original_nested_list) original_nested_list[0].append(4)

print("原始嵌套列表:", original_nested_list)

print("深拷贝嵌套列表:", deep_copied_nested_list)

 

3. 浅拷贝和深拷贝主要有以下区别:

对于简单对象(如不可变对象)

表现类似,都创建了一个新的对象来表示。

对于复合对象(如包含嵌套结构的对象)

  • 引用处理不同:浅拷贝只是复制了最外层对象和其直接包含的子对象的引用,而深拷贝会递归地复制所有层次的子对象,生成全新的、独立的对象结构。
  • 修改影响不同:修改原始对象中的子对象,浅拷贝得到的对象对应的子对象也会受到影响,因为它们指向相同的内存地址;而深拷贝得到的对象中的子对象不会受到任何影响。

 

# 简单对象
a = 5
shallow_a = copy.copy(a)
deep_a = copy.deepcopy(a)
a = 10
print("浅拷贝后:", shallow_a)
print("深拷贝后:", deep_a)

# 列表
list1 = [1, 2, 3]
shallow_list1 = copy.copy(list1)
deep_list1 = copy.deepcopy(list1)

list1.append(4)
print("浅拷贝后:", shallow_list1)
print("深拷贝后:", deep_list1)

# 复合对象
list1 = [1, 2, [3, 4]]
shallow_list1 = copy.copy(list1)
deep_list1 = copy.deepcopy(list1)

list1[2].append(5)

print("浅拷贝后:", shallow_list1)
print("深拷贝后:", deep_list1)

 

可以看到,浅拷贝后修改原始列表中的嵌套列表,浅拷贝的结果也跟着变了,而深拷贝的结果则不受影响。 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【stable diffusion】ComfyUI扩展安装以及点开后页面空白问题解决办法

扩展安装 虽然大家都推荐将扩展包直接放到extension文件夹的方式&#xff0c;但我还是推荐直接在sd webui的扩展处下载&#xff0c;酱紫比较好维护一点&#xff0c;我个人感觉。 按照上图顺序点击会出现”URLError: <urlopen error [Errno 11004] getaddrinfo failed>”…

排序

排序的概念及引用 排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#…

采用创新的FPGA 器件来实现更经济且更高能效的大模型推理解决方案

作者&#xff1a;Bob Siller&#xff0c;Achronix半导体产品营销总监 摘要&#xff1a;本文根据完整的基准测试&#xff0c;将Achronix Semiconductor公司推出的Speedster7t FPGA与GPU解决方案进行比较&#xff0c;在运行同一个Llama2 70B参数模型时&#xff0c;该项基于FPGA的…

作业8:信息存储的层次与并行技术

作业8&#xff1a;信息存储的层次与并行技术 一. 单选题&#xff08;共7题&#xff0c;70分&#xff09; (单选题) 考虑为以下表达式生成代码 A&#xff1d;B&#xff0b;C &#xff1b; D&#xff1d;E&#xff0d;F &#xff1b; 在执行过程中不需要插入任何停顿周期就能够消…

【机器学习】支持向量机(个人笔记)

文章目录 SVM 分类器的误差函数分类误差函数距离误差函数C 参数 非线性边界的 SVM 分类器&#xff08;内核方法&#xff09;多项式内核径向基函数&#xff08;RBF&#xff09;内核 源代码文件请点击此处&#xff01; SVM 分类器的误差函数 SVM 使用两条平行线&#xff0c;使用…

探索Edge

目录 1.概述 1.1.什么是浏览器 1.2.浏览器的作用 2.Edge 2.1.什么是Edge 2.2.诞生背景 2.3.历史版本 2.4.作用 2.5.优缺点 2.5.1.优点 2.5.2.缺点 3.对比 3.1.和360浏览器的对比 3.2.和谷歌浏览器&#xff08;Chrome&#xff09;的对比 4.未来展望 5.总结 1.概…

构建稳定高效的消息传递中间件:消息队列系统的设计与实现

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 一、引言 二、设计目标 2.1、高可用性 1. 集群搭建 1.1 …

【ai】blender4.1 安装插件

开源软件,所以资料充足插件及配置 下载插件插件是python开发的 编辑中的偏好设置 点击选中 点击一键切换中文英文 切换主题 插件源码

R语言统计分析——图形文本、自定义坐标轴和图例

参考资料&#xff1a;R语言实战【第2版】 我们可以在图形上添加标题&#xff08;main&#xff09;、副标题&#xff08;sub&#xff09;、坐标轴标签&#xff08;xlab、ylab&#xff09;并指定标轴范围&#xff08;xlim、ylim&#xff09;。 # 录入数据 dose<-c(20,30,40,4…

Go API

Go语言提供了大量的标准库&#xff0c;因此 google 公司也为这些标准库提供了相应的API文档&#xff0c;用于告诉开发者如何使用这些标准库&#xff0c;以及标准库包含的方法。官方位置&#xff1a;https://golang.org Golang中文网在线标准库文档: https://studygolang.com/p…

函数递归(C语言)(详细过程!)

函数递归 一. 递归是什么1.1 递归的思想1.2 递归的限制条件 二. 递归举例2.1 求n的阶乘2.2 按顺序打印一个整数的每一位 三. 递归与迭代3.1 求第n个斐波那契数 一. 递归是什么 递归是学习C语言很重要的一个知识&#xff0c;递归就是函数自己调用自己&#xff0c;是一种解决问题…

与浪涌保护器相关的8/20μs和10/350μs波形

8/20μs和10/350μ是到底是什么&#xff1f; 浪涌保护器中有个极为重要的参数&#xff0c;8/20μs或10/350μs。浪涌保护器的作用主要是保护电子设备免受电源浪涌或瞬态电压影响的重要装置。主要应对雷击&#xff0c;包括直击雷和感应雷。由于直击雷和感应雷的能量不一样&…

RabbitMQ实践——在Ubuntu上安装并启用管理后台

大纲 环境安装启动管理后台 RabbitMQ是一款功能强大、灵活可靠的消息代理软件&#xff0c;为分布式系统中的通信问题提供了优秀的解决方案。无论是在大规模数据处理、实时分析还是微服务架构中&#xff0c;RabbitMQ都能发挥出色的性能&#xff0c;帮助开发者构建高效、稳定的系…

《Windows API每日一练》3.3 更好效果的滚动条

本节讲述滚动条的复杂使用方法&#xff0c;以便达到更好的效果。Windows操作系统提供了两套机制&#xff0c;一套机制是使用默认的对象属性进行简单的操作&#xff0c;并提供简单便捷的API接口函数。另一套机制是用户可以自定义对象属性&#xff0c;实现自己想要的效果。本节我…

【ARM Cache 及 MMU 系列文章 6.1 -- Cache maintenance 指令及相关寄存器有哪些?】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Cache Maintenance registers and instructionsDCZID_EL0DCZID_EL0寄存器字段解释 DCZ 使用场景Cache maintenance 范围选择 Cache maintenance 指令集 Cache Maintenance registers a…

公司活动想找媒体报道宣传怎样邀请媒体?

在当今信息爆炸的时代,对于正处于成长阶段的中小企业而言,有效且成本控制得当的宣传策略是推动品牌发展、扩大市场影响力的关键。尤其是在预算有限的情况下,如何让“好钢用在刀刃上”,实现宣传效果的最大化,成为众多企业共同面临的挑战。在此背景下,智慧软文发布系统网站作为一…

IDEA 高效插件工具

文章目录 LombokMaven Helper 依赖冲突any-rule(正则表达式插件)快速生成javadocGsonFormat (Aits) 将json解析成类Diagrams使用 类图SequenceDiagram时序图GenerateAllSetter&#xff08;AltEnter&#xff09;大小写转写String ManipulationGitToolBox 代码提交人activate-pow…

机器学习笔记 - 用于3D数据分类、分割的Point Net简述

一、简述 在本文中,我们将了解Point Net,目前,处理图像数据的方法有很多。从传统的计算机视觉方法到使用卷积神经网络到Transformer方法,几乎任何 2D 图像应用都会有某种现有的方法。然而,当涉及到 3D 数据时,现成的工具和方法并不那么丰富。3D 空间中一个工具就是Point …

springboot的WebFlux 和Servlet

Spring Boot 中的 Servlet 定义&#xff1a; 在 Spring Boot 中&#xff0c;Servlet 应用程序通常基于 Spring MVC&#xff0c;它是一个基于 Servlet API 的 Web 框架。Spring MVC 提供了模型-视图-控制器&#xff08;MVC&#xff09;架构&#xff0c;用于构建 Web 应用程序。…

颠覆与创新:探寻Facebook未来的发展路径

Facebook&#xff0c;这个曾经引领社交网络革命的巨头&#xff0c;在如今竞争激烈的科技市场中&#xff0c;正面临着前所未有的挑战和机遇。如何在不断变化的数字世界中保持竞争力&#xff0c;成为业界领先者&#xff0c;这是摆在Facebook面前的重要课题。本文将探寻Facebook未…