25. 深浅拷贝

一、什么是浅拷贝

  只对对象的最顶层进行的拷贝称为 浅拷贝。我们可以用 copy 模块中的 copy() 方法实现浅拷贝。
在这里插入图片描述

import copya = [11, 22, 33]
b = [44, 55, 66]
c = [a, b]
d = copy.copy(c)print(f"c: {c}")
print(f"d: {d}")
print(f"c == d: {c == d}")print(f"id(c): {id(c)}")
print(f"id(d): {id(d)}")
print(f"c is d: {c is d}")print(f"id(c[0]): {id(c[0])}")
print(f"id(d[0]): {id(d[0])}")c[0][0] = 10
print(c)
print(d)

  当使用 copy.copy() 来完成浅拷贝的时候,它其实是需要检查以下拷贝的数据是否是可变。如果是可变类型,则拷贝最顶层。如果是不可变类型,则拷贝其引用。

import copya = [11, 22, 33]
b = (11, 22, 33)c = copy.copy(a)
d = copy.copy(b)print(id(a), id(c))
print(id(b), id(d))

二、什么是深拷贝

  对一个对象的所有层次的拷贝(递归拷贝)称为 深拷贝。我们可以使用 copy 模块中的 deepcopy() 方法实现深拷贝。
在这里插入图片描述

import copya = [11, 22, 33]
b = [33, 44, 55]
c = [a, b]
d = copy.deepcopy(c)print(f"c: {c}")
print(f"d: {d}")
print(f"c == d: {c == d}")print(f"id(c): {id(c)}")
print(f"id(d): {id(d)}")
print(f"c is d: {c is d}")print(f"id(c[0]): {id(c[0])}")
print(f"id(d[0]): {id(d[0])}")c[0][0] = 10
print(c)
print(d)

二、其它的拷贝方式

【1】、序列切片

  当使用序列切片拷贝的时候是 浅拷贝

a = [11, 22, 33]
b = [33, 44, 55]
c = [a, b]
d = c[:]print(f"c: {c}")
print(f"d: {d}")
print(f"c == d: {c == d}")print(f"id(c): {id(c)}")
print(f"id(d): {id(d)}")
print(f"c is d: {c is d}")print(f"id(c[0]): {id(c[0])}")
print(f"id(d[0]): {id(d[0])}")c[0][0] = 10
print(c)
print(d)

【2】、字典的 copy() 方法

  字典的 copy() 方法也是 浅拷贝

p1 = dict(name="Sakura", age=10, pet_phrase=["绝对没问题", "封印解除"])
p2 = p1.copy()print(f"p1: {p1}")
print(f"p2: {p2}")
print(f"p1 == p2: {p1 == p2}")print(f"id(p1): {id(p1)}")
print(f"id(p2): {id(p2)}")
print(f"p1 is p2: {p1 is p2}")print(f"id(p1['pet_phrase']): {id(p1['pet_phrase'])}")
print(f"id(p2['pet_phrase']): {id(p2['pet_phrase'])}")p1["pet_phrase"].append("变回你原来的样子")
print(f"p1: {p1}")
print(f"p2: {p2}")

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

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

相关文章

MySQL追梦旅途之性能优化

1、索引优化 索引可以显著加速查询操作,但过多或不适当的索引也会带来负面影响(如增加写入开销)。因此,选择合适的索引至关重要。 创建索引: 为经常用于WHERE子句、JOIN条件和ORDER BY排序的列创建索引。 CREATE I…

Liveweb视频汇聚平台支持WebRTC协议赋能H.265视频流畅传输

随着科技的飞速发展和网络技术的不断革新,视频监控已经广泛应用于社会各个领域,成为现代安全管理的重要组成部分。在视频监控领域,视频编码技术的选择尤为重要,它不仅关系到视频的质量,还直接影响到视频的传输效率和兼…

【超详细实战攻略】Jmeter逻辑控制器中if控制器、模块控制器、测试片段的使用方法

【超详细实战攻略】Jmeter逻辑控制器中if控制器、模块控制器、测试片段的使用方法 1 搭建测试对象1.1 禅道下载1.2 禅道安装1.3 运行禅道1.4 接口查看1.5 接口选择 2 Jmeter前置操作2.1 创建Jmeter线程组2.2 创建信息头管理器和请求默认值2.3 添加获取token接口2.4 添加监听器 …

我在广州学 Mysql 系列之 数据类型和运算符详解

ℹ️大家好,我是😆练小杰,今天主要学习 Mysql的数据类型以及运算符操作~~ 上周五学习了“Mysql 系列之 数据“表”的基本操作”~ 想要了解更多🈶️MYSQL 数据库的命令行总结!!! “我是你的敌人,…

如何高效获取Twitter数据:Apify平台上的推特数据采集解决方案

引言 在数据分析和市场研究领域,Twitter(现在的X)数据一直是重要的信息来源。但是,自从Twitter更改API定价策略后,获取数据的成本大幅提升。本文将介绍一个经济实惠的替代方案。 为什么需要Twitter数据? …

大模型学习笔记------SAM模型详解与思考

大模型学习笔记------SAM模型详解与思考 1、SAM框架概述2、Segment Anything Task3、Segment Anything Model SAM模型是Meta 提出的分割一切模型(Segment Anything Model,SAM)突破了分割界限,极大地促进了计算机视觉基础模型的发展…

Unity3D仿星露谷物语开发2之工程初始化

1、依赖包安装 进入【Window -> Package Manager】 安装如下插件: 1)Cinemachine 它是一套专门控制Unity Camera的模块,适用于各种游戏场景中物体的移动变化,解决了许多关于摄像机间的复杂控制,混合&#xff0c…

[论文阅读] |智能体长期记忆与反思

写在前面:10月份的时候,联发科天玑9400发布,搭载这款旗舰 5G 智能体 AI 芯片的荣耀MagicOS9.0实现了一句话让手机自动操作美团点咖啡。很快商场实体店里便能看到很多品牌手机已经升级为智能体语音助手。下一步,这些智能体或许便能…

数据结构之线性表1

2.1 线性表的定义和基本操作 1.线性结构的特点是:在数据元素的非空有限集中, (1)存在惟一的一个被称做“第一个”的数据元素; (2) 存在惟一的一个被称做“最后一个”的数据元素; &a…

【conda/cuda/cudnn/tensorrt】一份简洁的深度学习环境安装清单

🚀本文主要总结一下conda、cuda、cudnn、tensorrt的快速安装。至于nvidia显卡驱动的安装,暂且不提。本文适合有一定反复安装经验的读者😂,方便其快速整理安装思路。 NVIDIA Drivers 🌔01conda ⭐️ 注意,c…

拿到小米 Offer,却迷茫了。。

大家好,我是程序员鱼皮,12 月了,很多小伙伴也拿到了秋招的 Offer(没拿到也不要灰心),但即使拿到 Offer,可能还会有一些其他的顾虑。今天分享我们编程导航一位鱼友的提问,给大家作为学…

专业140+总分400+北京理工大学826信号处理导论考研经验北理工电子信息与通信工程,真题,大纲,参考书。

考研总分400,专业826信号处理导论(信号与系统和dsp)140,成功上岸北理工,虽然已经一段时间,但是后劲很大,每每回想还是昨日事,群里同学多次要求分享自己的一些经验,感谢大…

【CC2530开发基础篇】继电器模块使用

一、前言 1.1 开发背景 本实验通过使用CC2530单片机控制继电器的吸合与断开,深入了解单片机GPIO的配置与应用。继电器作为一种常见的电气控制元件,广泛用于自动化系统中,用于控制大功率负载的开关操作。在本实验中,将通过GPIO口…

geoserver(1) 发布sql 图层 支持自定义参数

前提使用postgis 数据库支持关联 join 支持 in,not in,like,及其他sql原生函数 新增sql图层 编写自定义sql 编辑sql语句必须输出带有geom数据 正则表达式去除 设置id以及坐标参考系 预览sql图层效果 拼接sql参数 http://xxx.com/geoserver/weather/wms?SERVICEWMS&VERSI…

docker login 出错 Error response from daemon

在自己的Linux服务器尝试登陆docker出错 输入完用户密码之后错误如下: 解决方案 1.打开daemo文件: vim/etc/docker/daemon.json 2.常用的国内Docker 镜像源地址 网易云 Docker 镜像:http://hub-mirror.c.163.com 百度云 Docker 镜像&#x…

aws(学习笔记第十七课) SQS Amazon Simple Queue Service服务

aws(学习笔记第十七课) SQS Amazon Simple Queue Service服务 学习内容: 使用SQS Amazon Simple Queue Service服务整体代码(nodejs的通常工程)代码动作 1. 使用SQS Amazon Simple Queue Service服务 利用应用程序来学习SQS 创建S3$ aws s…

OpenLinkSaas 2025年1月开发计划

先来看看OpenLinkSaas的大目标 在OpenLinkSaas的产品目标中,让开发人员更加方便的使用云资源是目标之一。通过各大云厂商的API,来可视化云上基础设施的数据是远远不够的。我们准备在2025年1月份增加方便管理和运营研发场景下服务器的能力。 这部分的功能…

6.1 初探MapReduce

MapReduce是一种分布式计算框架,用于处理大规模数据集。其核心思想是“分而治之”,通过Map阶段将任务分解为多个简单任务并行处理,然后在Reduce阶段汇总结果。MapReduce编程模型包括Map和Reduce两个阶段,数据来源和结果存储通常在…

上传文件时获取音视频文件时长和文本文件字数

获取音视频文件时长和文本文件字数 一、获取音视频文件时长二、计算文本文件字数 最近有个需求,要求上传文件时获取音视频文件时长和文本文件字数🐶。 发现这样的冷门资料不多,特做个记录。本文忽略文件上传功能,只封装核心的工具…

百度智能云千帆AppBuilder升级,百度AI搜索组件上线,RAG支持无限容量向量存储!

百度智能云千帆 AppBuilder 发版升级! 进一步降低开发门槛,落地大模型到应用的最后一公里。在千帆 AppBuilder 最新升级的 V1.1版本中,企业级 RAG 和 Agent 能力再度提升,同时组件生态与应用集成分发更加优化。 • 企业级 RAG&am…