【从Python基础到深度学习】10. Python深层拷贝 和 浅层拷贝

对于浅层拷贝而言

  •         不会发生拷贝的数据类型有:number、str、tuple
  •         会发生拷贝的数据类型有:list、dict、set
  •         对于不可变的数据类型,浅层拷贝时,不会发生拷贝,只是引用关系
  •         对于可变数据类型,在浅拷贝时,该数据本身会发生拷贝,但是其中的所有元素都不会发生拷贝
import copy
list1 = [991, "abc", (9,993), [994,995], [888 ,887], {"name": "Tom"}, (996 ,[997,998]), (888, (886,886) )]
list2 = copy .copy(list1)
list1.append(9)
#浅拷贝
list1[3] = [994]
list1[3].append(999)
print(id(list1) )
print(id(list2))

对于深拷贝而言

  •         不会发生拷贝的函数类型有:number、str、tuple(其中不包含可变的数据)
  •         会发生拷贝的函数类型有:list、dict、set、tuple(其中包含可变的数据)
  •         结论: 1、对于可变的数据类型,在深拷贝时,会发生拷贝。

                        2、对于本身是不可变数据类型的但其中包含可变数据类型,在深拷贝时仍发生拷贝。
                        3、对于被拷贝对象其中的元素是否发生拷贝,可以使用1、2判定。                
import copy
list1 = [991, "abc", (9,993), [994,995], [888 ,887], {"name": "Tom"}, (996 ,[997,998]), (888, (886,886) )]
list2 = copy .deepcopy(list1)
#深拷贝
print(id(list1) )
print(id(list2))

赋值问题

●Python中,变量定义和赋值必须是同时进行的,比如当执行程序a=999是先在内存中开辟一块空间来存放数据999,然后定义变量名a来指向这块空间的内存地址,方便我们使用变量值,所以变量名和值其实是一种引用的关联关系。
●严格来说,变量名本身没有类型,通常我们所说的变量类型指的是值的数据类型。

●为了节省内存空间,解释器做了优化,如果直接执行程序文件,相同值的变量会引用自同一个对象,而在交互式窗口运行则可以看到区别。
●小整数对象池:Python为了优化速度,避免整数频繁申请和销毁内存空间,把范围在[-5,256]之间的数字放在提前建立好的小整数对象池里面,不会被垃圾回收,在这范围内的数值如果相等,地址也就相同,因为使用的都是同一个对象

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

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

相关文章

YOLOv5创新改进:小目标涨点篇 | 一种新颖的轻量化网络,用于提升遥感图像中的小物体检测 | 2024年二区最新成果

💡💡💡本文独家改进:提出了三个创新的轻量级即插即用模块:特征增强模块(FEM)、特征融合模块(FFM)和空间上下文感知模块(SCAM),对标yolov5m,涨点的同时轻量化,GFLOPS从原始的47.9降低至37.6,MB从42.2降低至10.7 parametersGFLOPsMByolov5m2085293447.9

CSS极速入门

CSS介绍 什么是CSS? CSS(Cascading Style Sheet),层叠样式表,用于控制页面的样式. CSS能够对网页中元素位置的排版进行像素级的精确控制,实现美化页面的效果.能够做到页面的样式和结构分离. CSS可以理解为"东方四大邪术"的化妆术. 对页面展示进行化妆. 基本语法规…

[BUG]vscode插件live server无法自动打开浏览器

问题描述: 点了open with live server但是浏览器没有自动跳出来 http://127.0.0.1:5500/里面是有东西的 解决方法: 配置环境变量,在path中添加program files

Android车载应用与手机版Android应用有何不同?

Android车载应用与手机版Android应用有何不同?车载应用需要考虑到车辆环境的特殊性,比如屏幕尺寸、用户交互方式(可能更依赖语音控制和物理按钮)、以及对驾驶安全的考虑。车载应用通常需要与车辆的硬件和系统进行更紧密的集成&…

Linux 学习笔记(14)

十四、 网络管理 网卡在 Linux 操作系统中用 ethX,是由 0 开始的正整数,比如 eth0、eth1...... ethX。而普通猫和 ADSL 的接口是 pppX,比如 ppp0 等 7.1 、 ifconfig 1、 关于网络接口及配置工具说明; 在 Linux 操作系统中配置网络接口&…

SAR ADC学习笔记(3)

一、SAR ADC采样电路 1.采样网络的时域响应:采保信号 2.采样网络的KT/C噪声 3.采样抖动 采样开关的种类 1.单MOS管开关 2.传输门开关 3.栅极自举(Bootstrap)开关 结论:M4的衬底需要和B点短接,保证B点能够到达高压&…

Python 主线任务之整数和浮点数,今日buff叠加【玩转Python】

主线任务 主线任务之数据类型已进行33.3%,今日主线任务为“整数和浮点数”的了解和掌握,这两个一般是“共生”关系。了解其中一个,必然不能落下另外一个,两者兼顾方为最佳。 除了上面的主线任务之外,今日还需兼顾支线…

Doris——纵腾集团流批一体数仓架构

目录 前言 一、早期架构 二、架构选型 三、新数据架构 3.1 数据中台 3.2 数仓建模 3.3 数据导入 四、实践经验 4.1 准备阶段 4.2 验证阶段 4.3 压测阶段 4.4 上线阶段 4.5 宣导阶段 4.6 运行阶段 4.6.1 Tablet规范问题 4.6.2 集群读写优化 五、总结收益 六…

【复习】C++11特性

1. 智能指针 作用:堆内存指针+引用计数(控制器,由默认的释放规则,可以自定义),用于堆内存管理,当对象离开生命周期时,引用计数降至为0,释放堆内存。 智能指针由3类std::shared_ptr, std::unique_ptr, std::weak_ptrstd::shared_ptr初始化std::shared_ptr pShared1; s…

【Vue】VueX仓库

📝个人主页:五敷有你 🔥系列专栏:Vue ⛺️稳中求进,晒太阳 目录 Vue概述 是什么 场景: 优势 构建多组件共享环境 创建一个空仓库 核心概念 - state 状态 1. 提供数据 2.使用数据 ​编辑 …

Linux系统运维脚本:批量创建linux用户和密码(读取文件中的账号和密码来批量创建用户)

目 录 一、要求 二、解决方案 (一)解决思路 (二)方案 三、脚本程序实现 (一)脚本代码和解释 1、脚本代码 2、代码解释 (二)脚本验证 1、脚本编辑 2、给予执行权…

结合大象机器人六轴协作机械臂myCobot 280 ,解决特定的自动化任务和挑战!(上)

项目简介 本项目致力于探索和实现一种高度集成的机器人系统,旨在通过结合现代机器人操作系统(ROS)和先进的硬件组件,解决特定的自动化任务和挑战。一部分是基于Jetson Orin主板的LIMO PPRO SLAM雷达小车,它具备自主导航…

ELF 1技术贴|在NXP源码基础上适配开发板的按键功能

本次源代码适配是在NXP i.MX6ULL EVK评估板的Linux内核源代码(特定版本号为Linux-imx_4.1.15)的基础中展开的。 首要任务集中在对功能接口引脚配置的精细调整,确保其能无缝匹配至ELF 1开发板。接下来,我们将详细阐述适配过程中关…

MapReduce内存参数自动推断

MapReduce内存参数自动推断。在Hadoop 2.0中,为MapReduce作业设置内存参数非常繁琐,涉及到两个参数:mapreduce.{map,reduce}.memory.mb和mapreduce.{map,reduce}.java.opts,一旦设置不合理,则会使得内存资源浪费严重&a…

KingbaseES-V8R3下载安装及基础配置以及创建用户数据库

KingbaseES-V8-R3安装 1 下载准备安装包 下载地址:https://gitlab.cn/renfei/KingbaseES-V8-R3 准备好安装包及license.dat文件上传至服务器 2 挂载安装包 安装包为iso文件,需要挂载到目录 mount KingbaseES_V008R003C002B0340_Lin64_install.iso /…

Oracle中使用alter table move命令的方法降低表中的高水位(High Water Mark)

Oracle中使用alter table move命令的方法降低表中的高水位(High Water Mark) 导读 在Oracle数据库中,“高水位”(High Water Mark)是指表中数据的存储位置已经达到的最高位置。在表中插入、更新或删除数据时&#xff0…

裸机程序--时间片调度

1.为什么自己写一个时间片调度呢 a. 网上其实有很多成熟的时间片调度例程, 包括我最开始参加工作也是抄的网上的例程(还记得当时领导问我看明白了它的调度原理吗, 作为一个自学刚参加工作的我来说, 看懂别人的意思真的很难, 当时只能含糊其词的说看得差不多) b. 在我看来网上的…

Day 6.有名信号量(信号灯)、网络的相关概念和发端

有名信号量 1.创建: semget int semget(key_t key, int nsems, int semflg); 功能:创建一组信号量 参数:key:IPC对像的名字 nsems:信号量的数量 semflg:IPC_CREAT 返回值:成功返回信号量ID…

Java 中进行数据类型的强制转换

在Java中,数据类型的强制转换是指将一个数据类型的值转换为另一种数据类型的操作。这在编程中经常会用到,特别是在需要将不同类型的数据进行计算或者比较时。Java中的数据类型强制转换分为两种:隐式转换和显式转换。 1、隐式转换&#xff08…

5G智能制造热力工厂数字孪生可视化平台,推进热力行业数字化转型

5G智能制造热力工厂数字孪生可视化平台,推进热力行业数字化转型。在当今这个信息化、数字化的时代,热力生产行业也迎来了转型的关键时刻。为了提升生产效率、降低成本、提高产品质量,越来越多的热力生产企业开始探索数字化转型之路。而5G智能…