Python实战:深拷贝与浅拷贝
1. 引言
在Python中,对象是通过对内存中的数据进行引用来实现的。当我们创建一个对象并将其赋值给另一个变量时,实际上是将这个对象的引用复制给了另一个变量。这意味着,如果原始对象发生改变,引用该对象的变量也会受到影响。为了解决这个问题,Python提供了深拷贝和浅拷贝两种方式来复制对象。
2. 浅拷贝的原理与实现
浅拷贝(Shallow Copy)是指复制一个对象时,只复制对象本身及其包含的元素,但不复制元素所引用的对象。在Python中,可以使用copy模块的copy()函数来实现浅拷贝。
示例1:浅拷贝列表
import copy
list1 = [1, 2, [3, 4]]
list2 = copy.copy(list1)
list1[0] = 0
list1[2][0] = 0
print(list1) # 输出:[0, 2, [0, 4]]
print(list2) # 输出:[1, 2, [0, 4]]
在这个示例中,我们对list1进行了浅拷贝,生成了list2。当修改list1的第一个元素时,list2的第一个元素不受影响。但是,当我们修改list1的第三个元素(一个列表)时,list2的对应元素也发生了改变。这是因为浅拷贝只复制了列表本身,但没有复制列表中的元素所引用的对象。
3. 深拷贝的原理与实现
深拷贝(Deep Copy)是指复制一个对象时,不仅复制对象本身,还复制对象所引用的所有对象。在Python中,可以使用copy模块的deepcopy()函数来实现深拷贝。
示例2:深拷贝列表
import copy
list1 = [1, 2, [3, 4]]
list2 = copy.deepcopy(list1)
list1[0] = 0
list1[2][0] = 0
print(list1) # 输出:[0, 2, [0, 4]]
print(list2) # 输出:[1, 2, [3, 4]]
在这个示例中,我们对list1进行了深拷贝,生成了list2。当修改list1的第一个元素时,list2的第一个元素不受影响。同样,当我们修改list1的第三个元素(一个列表)时,list2的对应元素也没有发生改变。这是因为深拷贝复制了列表本身以及列表中的元素所引用的对象。
4. 深拷贝与浅拷贝的应用场景
在实际编程中,深拷贝和浅拷贝的应用场景取决于我们对数据的需求。以下是一些常见的应用场景:
(1)当需要复制一个对象,并且不希望原始对象与复制对象之间存在关联时,可以使用深拷贝。
(2)当需要复制一个对象,并且希望原始对象与复制对象共享一部分数据时,可以使用浅拷贝。
(3)在处理大型数据结构时,深拷贝可能会消耗较多的内存和计算资源。在这种情况下,可以考虑使用浅拷贝。
5. 总结
本文详细介绍了Python中的深拷贝与浅拷贝的原理、实现方法以及在实际编程中的应用。通过具体代码示例,我们了解到深拷贝和浅拷贝的区别以及如何选择合适的复制方式。掌握这两种复制方式对于高效地处理Python中的数据结构至关重要。
相关文章:
Python实战:深拷贝与浅拷贝
1. 引言 在Python中,对象是通过对内存中的数据进行引用来实现的。当我们创建一个对象并将其赋值给另一个变量时,实际上是将这个对象的引用复制给了另一个变量。这意味着,如果原始对象发生改变,引用该对象的变量也会受到影响。为了…...
rollup打包起手式
使用Rollup打包JavaScript rollup是一款小巧的javascript模块打包工具,更适合于库应用的构建工具;可以将小块代码编译成大块复杂的代码,基于ES6 modules,它可以让你的 bundle 最小化,有效减少文件请求大小,vue在开发的时候用的是webpack,但是…...
【笔记】语言实例比较 3. 无重复字符的最长子串 C++ Rust Java Python
语言实例比较 3. 无重复字符的最长子串 C Rust Java Python C C: 9ms O ( N 2 ) O(N^2) O(N2), 8.68MB mem O ( 1 ) O(1) O(1) 滑动窗口循环 class Solution { public:int lengthOfLongestSubstring(const string s) {//s[start,end) 前面包含 后面不包含int res(0);for (…...
int的大小你知道时4个字节,那么类的大小你知道怎么计算吗?
文章目录 1、如何计算类对象的大小2、类对象的存储方式猜测3、结构体内存对齐规则1、如何计算类对象的大小 class A { public: void PrintA() { cout<<_a<<endl; } private: char _a; };问题: 类中既可以有成员变量,又可以有成员函数,那么一个类的对象中包含了…...
OpenCV学习笔记(十一)——利用Sobel算子计算梯度
Sobel算子是基于一阶导数的离散差分算子,其中Sobel对于像素值的变化是十分敏感的,在进行边缘检测的时候,Sobel算子常用于对周围像素的重要性进行检测。 Sobel算子包括检验水平方向的算子和检测竖直方向的算子 计算机梯度值的操作如下&#x…...
扩展一下BenchmarkSQL,新增支持ASE/HANA/DB2/SQLServer,可以随便用了
1 背景 提到数据库的性能,自然就避不开性能测试。有专用于测试OLTP的,也有偏重于OLAP的。本文介绍的BenchmarkSQL就属于测试OLTP中的一个,基于TPCC的。网上有很多介绍TPC*的相关测试的文章,大家可以自行脑补。而PostgreSQL自带的pgbench是属于TPCC的前一个基准测试程序,偏…...
Android 静默安装成功后自启动
近期开发上线一个常驻app,项目已上线,今天随笔记录一下静默安装相关内容。我分三篇静默安装(root版)、静默安装(无障碍版)、监听系统更新、卸载、安装。 先说说我的项目需求:要求app一直运行&am…...
计算机二级真题讲解每日一题:《format格式化》
描述 在右侧答题模板中修改代码,删除代码中的横线,填写代码,完成如下功能。 接收用户输入的一个小于 20的正整数,在屏幕上逐行递增显示从 01 到该正整数,数字显示的宽度为 2,不足位置补 0,后面追…...
RabbitMQ问题
如何实现顺序消费? 消息放入到同一个队列中消费 如何解决消息不丢失? 方案: 如上图:消息丢失有三种情况,解决了以上三种情况就解决了丢失的问题 1、丢失1--->消息在到达交换机的时候;解决࿱…...
flutter->Scaffold左侧/右侧侧边栏和UserAccountsDrawerHeader的使用
//appBar的 leading/actions 和 Scaffold的drawer/endDrawer 冲突只能存在一个 import package:flutter/material.dart;void main() {runApp(MyApp()); }class MyApp extends StatelessWidget {const MyApp({super.key});overrideWidget build(BuildContext context) {retur…...
vulnhub prime1通关
目录 环境安装 1.信息收集 收集IP 端口扫描 目录扫描 目录文件扫描 查找参数 打Boss 远程文件读取 木马文件写入 权限提升 方法一 解锁密钥 方法二: linux内核漏洞提权 总结 环境安装 Kali2021.4及其prime靶机 靶机安装:Prime: 1 ~ Vul…...
JVM快速入门(1)JVM体系结构、运行时数据区、类加载器、线程共享和独享、分区、Java对象实例化
5.1 JVM体系结构 线程独占区-程序计数器(Program Counter Register) 程序计数器是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器;在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数…...
CSS3新属性(学习笔记)
一、. 圆角 border-radius:; 可以取1-4个值(规则同margin) 可以取px和% 一般用像素,画圆的时候用百分比:border-radius:50%; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&q…...
41-Vue-webpack基础
webpack基础 前言什么是webpackwebpack的基本使用指定webpack的entry和output 前言 本篇开始来学习下webpack的使用 什么是webpack webpack: 是前端项目工程化的具体解决方案。 主要功能:它提供了友好的前端模块化开发支持,以及代码压缩混淆、处理浏览…...
数据仓库的分层理论
数据仓库的分层理论是为了更好地组织和管理数据,支持复杂的数据分析和决策支持。在这一理论中,数据仓库被分为多个层次,每个层次都有其特定的作用和设计原则。以下是每一层的详细介绍,以及以销售人员为例的Doris建表实例。 ODS层…...
MySQL 8.0-索引- 不可见索引(invisible indexes)
概述 MySQL 8.0引入了不可见索引(invisible index),这个在实际工作用还是用的到的,我觉得可以了解下。 在介绍不可见索引之前,我先来看下invisible index是个什么或者定义。 我们依然使用拆开来看,然后再把拆出来的词放到MySQL…...
Uibot6.0 (RPA财务机器人师资培训第3天 )财务招聘信息抓取机器人案例实战
训练网站:泓江科技 (lessonplan.cn)https://laiye.lessonplan.cn/list/ec0f5080-e1de-11ee-a1d8-3f479df4d981https://laiye.lessonplan.cn/list/ec0f5080-e1de-11ee-a1d8-3f479df4d981https://laiye.lessonplan.cn/list/ec0f5080-e1de-11ee-a1d8-3f479df4d981(本博…...
Eureka和Nacos的关系
目录 它们的比较: 结论: Eureka和Nacos都是服务发现和注册中心,它们在微服务架构中扮演着关键角色,但它们是由不同的组织开发的,服务于类似但不完全相同的目的。以下是它们之间的关系: Eureka:…...
极简自建web视频会议,私有云,rtmp/rtsp/webrtc一键参会直播会议互动方案
随着视频互动深入工作日常,很多客户需要自建一个会议,监控的交互平台,目前外面不管是开源还是非开源的平台,都是极为复杂,一般linux安装库关联部署复杂,非技术人员根本没办法使用,不方便集成部署…...
5G智能网关助力工业铸造设备监测升级
随着物联网技术的迅猛发展和工业4.0浪潮的推进,传统工业正面临着严峻的转型升级压力。在这一背景下,铸造行业——这一典型的传统重工业领域,也必须积极探索借助5G、物联网、边缘计算等技术提升生产经营效率的新路径。 本文就基于佰马合作伙伴…...
三大平台智能抢票系统:从技术小白到抢票高手的自动化解决方案
三大平台智能抢票系统:从技术小白到抢票高手的自动化解决方案 【免费下载链接】damaihelper 支持大麦网,淘票票、缤玩岛等多个平台,演唱会演出抢票脚本 项目地址: https://gitcode.com/gh_mirrors/dam/damaihelper 在数字化票务时代&a…...
八大网盘直链解析终极指南:如何彻底告别下载限速困扰
八大网盘直链解析终极指南:如何彻底告别下载限速困扰 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...
s2-pro部署教程:Caddy反向代理+自动HTTPS+访问日志审计配置
s2-pro部署教程:Caddy反向代理自动HTTPS访问日志审计配置 1. 环境准备与快速部署 在开始部署s2-pro语音合成服务前,请确保您的服务器满足以下基本要求: 操作系统:Ubuntu 20.04/22.04 LTS(推荐)硬件配置&…...
老照片修复不求人:GPEN镜像WebUI界面详解,每个按钮都讲清楚
老照片修复不求人:GPEN镜像WebUI界面详解,每个按钮都讲清楚 1. 引言:为什么你需要这个工具? 翻看家里的老相册,是不是总能看到一些模糊、发黄、甚至布满划痕的照片?那些照片里,有爷爷奶奶年轻…...
随笔——视觉惯性SLAM方法比较
一、方法分类概览 视觉SLAM根据前端匹配方式主要分为: 特征点法:提取角点/边缘,计算描述子匹配 → 精度高、鲁棒,但地图稀疏、弱纹理易失败。直接法:直接使用像素灰度值 → 计算快、弱纹理可用,但对光照/…...
自然语言处理实战指南:从文本表示到深度学习
自然语言处理实战指南:从文本表示到深度学习 标签:#自然语言处理、#人工智能、#大模型、#大模型实战、#transformer、#机器学习、#深度学习 模块四:项目实战 技术对比 避坑经验 4.1 项目实战(中文商品评论情感分析) …...
Phi-4-mini-reasoning在ollama中如何提升数学推理能力?微调数据与提示策略分享
Phi-4-mini-reasoning在ollama中如何提升数学推理能力?微调数据与提示策略分享 数学推理一直是AI领域的挑战性任务,而Phi-4-mini-reasoning作为专门针对推理任务优化的轻量级模型,在ollama平台上展现出了令人惊喜的数学问题解决能力。本文将深…...
s2-pro GPU利用率提升方案:批处理+流式响应优化语音合成吞吐量
s2-pro GPU利用率提升方案:批处理流式响应优化语音合成吞吐量 1. 引言 语音合成技术正在快速改变内容创作的方式,但很多开发者在使用s2-pro这类专业级语音合成模型时,常常遇到GPU利用率低下的问题。想象一下,当你需要批量生成数…...
ScriptGen Modern Studio在短视频/微短剧创作中的应用实战
ScriptGen Modern Studio在短视频/微短剧创作中的应用实战 1. 短视频创作的新工具革命 短视频和微短剧行业正在经历前所未有的爆发式增长。根据最新行业报告,2023年短视频内容创作量同比增长超过60%,而专业级微短剧的市场规模预计将在2025年突破千亿大…...
MacOS下Homebrew国内源配置全攻略:阿里、清华、中科大镜像一键切换
1. 为什么需要切换Homebrew国内镜像源? 如果你经常在MacOS上使用Homebrew安装软件,大概率遇到过下载速度慢到让人抓狂的情况。我刚开始用brew安装Python时,眼睁睁看着进度条像蜗牛爬行,一个200MB的包下了半小时还没完。后来才发现…...
