python 浅拷贝copy与深拷贝deepcopy 理解

news2025/4/18 4:09:57

一 浅拷贝与深拷贝

1. 浅拷贝

浅拷贝只复制了对象本身(即c++中的引用)。

2. 深拷贝

深拷贝创建一个新的对象,同时也会创建所有子对象的副本,因此新对象与原对象之间完全独立。

二 代码理解

1. 案例一

a = 10
b = a
b = 20
print(a)
10

通过案例可以看出,a并没有改变值,因为a是数字,不可改变的,这里b=a并不是引用,所以不能改变。

2. 案例二

a = [1, 25, 60, 87, 100]
b = a
b[2] = 2
print(a)
[1, 25, 2, 87, 100]

通过案例可以看出,a的值发生改变了,因为a是list,是可以改变的,所以b=a是引用,所以发生了改变。

3. 案例三

import copy
a = [1, 25, 60, 87, 100]
b = copy.deepcopy(a)
b[2] = 2
print('a : ', a)
print('b : ', b)

a :  [1, 25, 60, 87, 100]
b :  [1, 25, 2, 87, 100]

通过案例可以看出,a并没有改变值,因为我使用了深拷贝,所以不发生改变。

4. 案例四

import numpy as np
a = np.array([1, 2, 3, 4])
b = a
b[1] = 0
print(a)
[1 0 3 4]

通过案例可以看出,a的值发生改变了,因为a是np,是可以改变的,所以b=a是引用,所以发生了改变。

5. 案例五

import numpy as np
a = np.array([1, 2, 3, 4])
b = a.copy()
b[1] = 0
print('a : ', a)
print('b : ', b)
a :  [1 2 3 4]
b :  [1 0 3 4]

通过案例可以看出,a并没有改变值,因为我使用了深拷贝,所以不发生改变。

三 总结

我们通过案例发现,只要是python可变的变量,如果使用=号赋值,就是引用,不可变的,就不是引用。当使用可变数据时候需要深拷贝才能解决问题。

不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组)。
可变数据(3个):List(列表)、Dictionary(字典)、Set(集合)
np也是可变数据,但是使用深拷贝是copy方法即可

千万要注意等号的赋值含义!千万要注意等号的赋值含义!千万要注意等号的赋值含义!

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

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

相关文章

基于neo4j存储知识树-mac

1、安装jdk21 for mac(jdk-21_macos-aarch64_bin.dmg) 2、安装neo4j for mac(neo4j-community-5.26.0-unix.tar.gz) 3、使用默认neo4j/neo4j登录http://localhost:7474 修改登录密码,可以使用生成按钮生成密码,连接数据库,默认设置为neo4j…

【学习笔记】文件上传漏洞--二次渲染、.htaccess、变异免杀

目录 第十二关 远程包含地址转换 第十三关 突破上传删除 条件竞争 第十四关 二次渲染 第十五关 第十六关 第十七关 .htaccess 第十八关 后门免杀 第十九关 日志包含 第十二关 远程包含地址转换 延续第十一关,加一个文件头,上传成功&#xff0c…

【OS】Process Management(3)

《计算机操作系统(第三版)》(汤小丹)学习笔记 文章目录 5、进程通信(Inter-Process Communication)5.1、进程通信的类型5.1.1、共享存储器系统(Shared Memory System)5.1.2、消息传递…

单reactor实战

前言:reactor作为一种高性能的范式,值得我们学习 本次目标 实现一个基于的reactor 具备echo功能的服务器 核心组件 Reactor本身是靠一个事件驱动的框架,无疑引出一个类似于moduo的"EventLoop "以及boost.asio中的context而言,不断…

初阶C++笔记第一篇:C++基础语法

虽然以下大多数知识点都在C语言中学过,但还是有一些知识点和C语言不同,比如:代码格式、头文件、关键字、输入输出、字符串类型等... 1. 初识C 1.1 第一个C程序 编写C分为4个步骤: 创建项目创建文件编写代码运行程序 C的第一条…

无需libpacp库,BPF指令高效捕获指定数据包

【环境】无libpacp库的Linux服务器 【要求】高效率读取数据包,并过滤指定端口和ip 目前遇到两个问题 一是手写BPF,难以兼容,有些无法正常过滤二是性能消耗问题,尽可能控制到1% 大方向:过滤数据包要在内核层处理&…

react实现上传图片到阿里云OSS以及问题解决(保姆级)

一、优势 提高上传速度:前端直传利用了浏览器与 OSS 之间的直接连接,能够充分利用用户的网络带宽。相比之下,后端传递文件时,文件需要经过后端服务器的中转,可能会受到后端服务器网络环境和处理能力的限制,…

Python 字典和集合(常见的映射方法)

本章内容的大纲如下: 常见的字典方法 如何处理查找不到的键 标准库中 dict 类型的变种set 和 frozenset 类型 散列表的工作原理 散列表带来的潜在影响(什么样的数据类型可作为键、不可预知的 顺序,等等) 常见的映射方法 映射类型…

Matlab轴承故障信号仿真与故障分析

1.摘要 本文介绍了一个基于Matlab的轴承故障信号仿真与分析程序,旨在模拟和分析轴承内圈故障信号的特征。程序首先通过生成故障信号、共振信号和调制信号,添加噪声和离散化处理,构建模拟的振动信号,并保存相关数据。通过快速傅里…

Linux 进程 | 概念 / 特征 / 状态 / 优先级 / 空间

注: 本文为 “Linux 进程” 相关文章合辑。 未整理去重。 Linux 进程概念(精讲) A little strawberry 于 2021-10-15 10:23:55 发布 基本概念 课本概念:程序的一个执行实例,正在执行的程序等。 内核观点&#xff…

重回全面发展亲自操刀

项目场景: 今年工作变动,优化后在一家做国有项目的私人公司安顿下来了。公司环境不如以前,但是好在瑞欣依然可以每天方便的买到。人文氛围挺好,就是工时感觉有点紧,可能长期从事产品迭代开发,一下子转变做项…

3D珠宝渲染用什么软件比较好?渲染100邀请码1a12

印度珠宝商 Mohar Fine Jewels 和英国宝石商 Gemfields 在今年推出了合作珠宝系列——「Emeralds in Full Bloom」,它的灵感源自花草绽放的春季田野,共有 39 件作品,下面这个以植物为主题的开口手镯就是其中一件。 在数字时代,像这…

【数据结构】邻接矩阵完全指南:原理、实现与稠密图优化技巧​

邻接矩阵 导读一、图的存储结构1.1 分类 二、邻接矩阵法2.1 邻接矩阵2.2 邻接矩阵存储网 三、邻接矩阵的存储结构四、算法评价4.1 时间复杂度4.2 空间复杂度 五、邻接矩阵的特点5.1 特点1解析5.2 特点2解析5.3 特点3解析5.4 特点4解析5.5 特点5解析5.6 特点6解析 结语 导读 大…

【嵌入式-stm32电位器控制以及旋转编码器控制LED亮暗】

嵌入式-stm32电位器控制LED亮暗 任务1代码1Key.cKey.hTimer.cTimer.hPWM.cPWM.hmain.c 实验现象1任务2代码2Key.cKey.hmain.c 实验现象2问题与解决总结 源码框架取自江协科技,在此基础上做扩展开发。 任务1 本文主要介绍利用stm32f103C8T6实现电位器控制PWM的占空比…

Uniapp 集成极光推送(JPush)完整指南

文章目录 前言一、准备工作1. 注册极光开发者账号2. 创建应用3. Uniapp项目准备 二、集成极光推送插件方法一:使用UniPush(推荐)方法二:手动集成极光推送SDK 三、配置原生平台参数四、核心功能实现1. 获取RegistrationID2. 设置别…

2025年常见渗透测试面试题-sql(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 SQLi 一、发现test.jsp?cid150 注入点的5种WebShell获取思路 1. 文件写入攻击 2. 日志文件劫持 3.…

【RabbitMQ】队列模型

1.概述 RabbitMQ作为消息队列,有6种队列模型,分别在不同的场景进行使用,分别是Hello World,Work queues,Publish/Subscribe,Routing,Topics,RPC。 下面就分别对几个模型进行讲述。…

StarRocks 助力首汽约车精细化运营

作者:任智红,首汽约车大数据负责人 更多交流,联系我们:https://wx.focussend.com/weComLink/mobileQrCodeLink/334%201%202/ffbe5 导读: 本文整理自首汽约车大数据负责人任智红在 StarRocks 年度峰会上的演讲&#xf…

痉挛性斜颈康复助力:饮食调养指南

痉挛性斜颈患者除了积极治疗,合理饮食也能辅助缓解症状,提升生活质量。其健康饮食可从以下方面着手: 高蛋白质食物助力肌肉修复 痉挛性斜颈会导致颈部肌肉异常收缩,消耗较多能量,蛋白质有助于肌肉的修复与维持。日常可…

mysql镜像创建docker容器,及其可能遇到的问题

前提,已经弄好基本的docker服务了。 一、基本流程 1、目录准备 我自己的资料喜欢放在 /data 目录下,所以老规矩: 先进入 /data 目录: cd /data 创建 mysql 目录并进入: mkdir mysql cd mysql 2、镜像查找 docke…