Python标准库之copy

news2024/10/7 14:32:52

1. copy标准库简介

Python 中赋值语句不复制对象,而是在目标和对象之间创建绑定 (bindings) 关系。对于自身可变或者包含可变项的集合对象,我们有时会需要生成其副本用于改变操作,进而避免改变原对象。

2. copy常用函数

2.1 copy.copy(x)

对任意Python对象做浅拷贝操作

2.2 copy.deepcopy(x, memo=None, _nil=[])

对任意Python对象做深拷贝操作

2.3 浅拷贝和深拷贝使用对比

浅层复制和深层复制之间的区别仅与复合对象 (即包含其他对象的对象,如列表或类的实例) 相关:

  • 一个 浅层复制 会构造一个新的复合对象,然后(在可能的范围内)将原对象中找到的 引用 插入其中。
  • 一个 深层复制 会构造一个新的复合对象,然后递归地将原始对象中所找到的对象的 副本 插入。
import copy

# 1.创建包含可变对象list的复合对象
tup=(1,1.2,2+3j,["hello","world"])
# 2.创建自身可变的复合对象
ls=["cyr",0xfff,2e-3,[5,"day"]]
# 对1.做浅拷贝和深拷贝
shallow_copy_tup,deep_copy_tup=copy.copy(tup),copy.deepcopy(tup)
# 对2.做浅拷贝和深拷贝
shallow_copy_ls,deep_copy_ls=copy.copy(ls),copy.deepcopy(ls)

"""
is关键字用于判断是否是一个对象,即内存地址是否一致
==关系运算符用于判断两个对象的逻辑相等性,即内容是否相同
"""
print("""
浅拷贝与包含可变对象list的原始复合对象是否是一个对象?{} 内容是否相同?{}
深拷贝与包含可变对象list的原始复合对象是否是一个对象?{} 内容是否相同?{}
浅拷贝与自身可变的原始复合对象是否是一个对象?{} 内容是否相同?{}
深拷贝与自身可变的原始复合对象是否是一个对象?{} 内容是否相同?{}
""".format(shallow_copy_tup is tup,shallow_copy_tup==tup,deep_copy_tup is tup,deep_copy_tup==tup,
          shallow_copy_ls is ls,shallow_copy_ls==ls,deep_copy_ls is ls,deep_copy_ls==ls))

# 对原始复合对象做修改
tup[-1].append("Python")
ls[-1].append(2022)

print("""
修改包含可变对象list的原始复合对象后为{}
浅拷贝为{}
深拷贝为{}
修改自身可变的原始复合对象后为{}
浅拷贝为{}
深拷贝为{}
""".format(tup,shallow_copy_tup,deep_copy_tup,ls,shallow_copy_ls,deep_copy_ls))

在这里插入图片描述

3.参考文献

  • copy — 浅层 (shallow) 和深层 (deep) 复制操作 — Python 3.7.13 文档

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

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

相关文章

R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值

全文链接:http://tecdat.cn/?p30597最近我们被要求解决时间序列异常检验的问题。有客户在使用大量的时间序列。这些时间序列基本上是每10分钟进行一次的网络测量,其中一些是周期性的(即带宽),而另一些则不是&#xff…

Android Jetpack Compose——一个简单的聊天界面

Jetpack Compose——聊天界面前言效果视频引入RowColumnTextImage聊天界面效果左边布局右边布局插入数据总结前言 目前声明式UI已经成为前端开发趋势,除了一开始的跨端开发React,Flutter等以及Web支持外,后续Android和IOS平台也相继推出声明式开发&…

零基础快速开发Vue图书管理系统—登录注册篇(一)

零基础快速开发Vue图书管理系统—登录注册篇(一) 一、图书管理系统项目功能 二、项目技术选型 前端主要采用:Vue3.x (vuex/vue-router)、Ant Design Vue、Axios等服务端主要采用:Node.js、Koa、Mongoose等数据库主要采用&#x…

Docker安装Redis集群失败经历汇总

在程序员的开发过程中,Redis可以说基本上是必不可少的缓存中间件。不管是二进制包还是docker安装Redis的文章在网上都是数不胜数。我之前自己玩Redis的时候基本不是二进制包安装就是docker安装,也没有尝试过集群方式。每次需要的时候,网上百度…

DataFrame转化为json的方法教程

网络上有好多的教程,讲得不太清楚和明白,我用实际的例子说明了一下内容,附档代码,方便理解和使用 DataFrame.to_json(path_or_bufNone, orientNone, date_formatNone, double_precision10, force_asciiTrue, date_unitms, defau…

考研数据结构大题整合_组一(ZYL组)

考研数据结构大题整合 目录考研数据结构大题整合一、ZYL组ZYL组一ZYL组二ZYL组三ZYL组四ZYL组五ZYL组六ZYL组七ZYL组八一、ZYL组 ZYL组一 1.一棵树有度为i的结点ni 个(i1,2,3,…m), 求叶结点的个数.(10分) 2、已知带权连通图G(V,E)的邻接表如图所示&am…

rubbitmq 图形界面使用 常用六种通信模式 Simple-Work-fanout-direct-topic-headers

阿里云服务器添加rubbitmq需要开启端口:rabbitmq阿里云服务器开放端口号 Rubbitmq地址: 服务器地址:15672 1.简单模式Simple 一个生产者、一个消费者,不需要设置交换机(使用默认的交换机) 2.工作队列模式Work Queue 一个生产者、多个消费者&a…

windows操作系统双网卡问题处理办法

windows操作系统双网卡问题处理办法(详解)一、命令说明二、处理办法1.设置外网网关为默认网关2.查看当前路由表3.删除缺省路由4.添加访问外网的缺省路由5.添加访问内网的路由信息一、命令说明 显示 IP 路由表的信息 route print显示 IP 路由表中以 192…

3.7.3、ARP协议(网际层)

地址解析协议 ARP 1、工作原理 在共享总线型的以太网中 为了简单起见:只有各主机所配置的 IP 地址和其网卡上固化的 MAC 地址 假设主机 B 要给主机 C 发送数据包 主机 B 知道主机 C 的 IP 地址,但是不知道 C 的 MAC 地址 因此,主机 B 的…

使用 Bytebase 管理 Rainbond 上的应用数据库

在应用的发布过程中数据库的结构变更一直是最复杂也是风险最大的环节,而 Bytebase 可以对这一过程进行全生命周期的管理。在 Rainbond 中安装 Bytebase,轻松管理部署在 Rainbond 上的所有数据库。 Bytebase 是什么? Bytebase 是一个开源的数…

linux驱动 usb转串口ch344 改变读取缓冲区大小

开发环境 核心板:IMX6 内核版本:linux4.1.5 问题 通过USB扩展出来的串口接收数据会出现截断现象,而且每次截断的大小都一样。而核心板提供的串口UART就没有这个现象。 核心板自带串口正常的现象: 扩展串口异常现象&#xff1a…

【软件测试】8年资深测试说出来我们的心声......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 执着于手动的功能测…

VLAN划分-----计算机网络

拓扑图 LSW1与LSW2都是三层交换机,现在两台交换机分别连着两台pc。 其中: LSW1的0/0/1端口连着pc1,0/0/2连着pc2,0/0/3端口连着lsw2。 LSW2的0/0/1端口连着pc3,0/0/2连着pc4,0/0/3端口连着lsw1。 不同vlan…

pycharm opencv无法自动补全

我的环境 python 3.6.9opencv-python 4.4.0.42opencv-contrib-python 4.6.66ubuntu 18.04 LTSpycharm 2020.3.2 解决方案 首先找到cv2的site-packagespip3 show opencv-python进入到该目录, 复制so结尾文件至上级目录: cp cv2.cpython-36m-x86_64-linux-gnu.so ../等待pych…

基于粒子群算法和遗传算法优化的高速列车横向悬挂

目录 前言 1.高速列车模型 2.优化算法优化模糊PID流程 3.普通PID、优化算法模糊PID仿真对比 3.1 模糊控制器设计 3.2 仿真结果 3.2.1粒子群优化PID 3.2.2粒子群优化模糊PID 3.2.3遗传算法优化模糊PID 4.总结 前言 高速列车,是指最高行驶速度在200km/h 及以…

二、【React-Router5】路由的基本使用

文章目录1、写在前面的总结2、效果图3、项目结构4、CODE4.1、index.js4.2、App.js4.3、About.jsx4.4、Home.jsx5、Result6、路由组件与一般组件7、Link 升级 NavLink8、封装NavLink8.1、MyNavLink.jsx8.2、修改上面4.2部分代码1、写在前面的总结 明确好界面中的导航区、展示区…

火山引擎数智平台:CDP产品要能与多方联动

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 CDP(Customer Data Platform,客户数据平台)市场将迎来新一轮的高速增长。 国际数据公司(以下简称“IDC”&#xff0…

[附源码]Python计算机毕业设计SSM流浪猫狗救助站(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

ofxTimeMeasurements——OpenFrameworks插件,可以轻松测量C++代码任何部分的执行时间

一、简介 ofxTimeMeasurements是一款用于OpenFrameworks 开源C框架的插件,可以让使用者轻松测量C代码任何部分的执行时间。其优势在于以图形化的方式显示代码执行时间。效果如下: 只是它必须依赖OpenFrameworks,所以如果你不用这个框架&…

《Head First HTML5 javascript》第10章 自定义对象

2022.11.23 第10章 自定义对象 面向对象OOP(Object Oriented Programming) 对象是一个包含相关数据和方法的集合(通常由一些变量和函数组成,我们称之为对象里面的属性和方法)对象是存储在单个分组中的相关功能的集合。在 JavaScript 中&…