Python武器库开发-常用模块之copy模块(十五)

常用模块之copy模块(十五)

在Python编程中,我们经常遇到需要复制或拷贝数据的情况。为了避免不必要的问题和错误,Python提供了copy模块来处理复制操作。本文将介绍copy模块的用法,包括浅拷贝和深拷贝的概念以及如何在不同场景中使用。

我们在Python中使用以下的语句到如copy模块

import copy

什么是浅拷贝和深拷贝

首先,让我们了解一下浅拷贝和深拷贝的概念,浅拷贝是指只复制了对象的引用,而不复制对象本身。也就是说,新对象和原对象共享同一块内存空间,当一个对象改变时,另一个对象也会跟着改变。深拷贝是指复制了对象及其所有子对象的内容,而不仅仅是对象的引用。也就是说,新对象和原对象拥有各自独立的内存空间,彼此之间互不影响。

在Python中,可以使用copy模块提供的函数来实现浅拷贝和深拷贝。

copy模块提供了两种方法:

  • copy()
  • deepcopy()

下面我们逐一介绍这些方法:

浅拷贝(copy)

浅复制是最简单的一种复制方式,它创建了一个新的对象,该对象与原始对象有相同的值,但不会复制原始对象内部的嵌套对象的引用。Python的copy模块提供了copy.copy()方法,用于执行浅复制

import copyoriginal_list = [1, 2, [3, 4]]
shallow_copy = copy.copy(original_list)shallow_copy[2][0] = 99print(original_list)  

以上代码输出的实例:

在这里插入图片描述

在上面的示例中,shallow_copy是original_list的浅复制,它们共享内部嵌套列表的引用,相当于指向的内容的地址是相同的,不论是复制对象还是原始对象发生修改,最终指向的内容也会发生变化。

深复制(deepcopy)

深复制创建一个完全独立于原始对象的新对象,包括内部的嵌套对象。Python的copy模块也提供了copy.deepcopy()方法,用于执行深复制。与copy()方法不同,deepcopy()方法返回的是对象的深拷贝。所谓深拷贝,是指新创建的对象和原对象完全分离,互不干扰。如果修改新创建的对象,原对象不会发生改变。在深拷贝的情况下,如果对象包含可变元素,这些元素将在新旧对象之间完全独立。

import copyoriginal_list = [1, 2, [3, 4]]
deep_copy = copy.deepcopy(original_list)deep_copy[2][0] = 99print(original_list)  

以上代码输出的实例:

在这里插入图片描述

可以看到,虽然我们通过 deep_copy[2][0] = 99 修改了original_list列表,但是最终输出的列表结果却没有受到影响。这是因为深拷贝复制了对象及其所有子对象的内容,两个列表拥有各自独立的内存空间。

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

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

相关文章

根据Aurora发送时序,造Aurora 数据包,从而进行AXIS接口数据位宽转换仿真

首先Aurora采用AXIS接口 由于后续需要进行AXIS接口 不同时钟域的数据位宽转换(64bit和256bit之间的转换),因此分两次走。 第一种方法:采用AXIS数据位宽转换IP AXIS跨时钟域IP 第二种方法:逻辑完成 下面记录逻辑…

C++17中std::any的使用

类sdk:any提供类型安全的容器来存储任何类型的单个值。通俗地说,std::any是一个容器,可以在其中存储任何值(或用户数据),而无需担心类型安全。void*的功能有限,仅存储指针类型,被视为不安全模式。std::any可以被视为vo…

“如何对TXT文件的内容进行连续行删除?实现一键文件整理!

如果你有一个TXT文件,需要删除其中的连续行,这可能是为了整理文件、去除重复信息或清除不需要的文本。尽管手动删除每一行可能很耗时,但幸运的是,有一个简单而高效的方法可以帮助你实现这个目标。 首先,在首助编辑高手…

高防IP的原理

高防IP,把域名解析到高防IP上(web事务只要把域名指向高防IP 即可。非web事务,把事务IP换成高防IP即可)一起在高防IP上设置转发规矩;所有公网流量都会走高防IP,通过端口协议转发的方法将用户的拜访通过高防IP转发到源站IP,一起将歹…

Docker 从 安装 到 配置 到 实战:手把手带你入门

文章目录 前言什么是docker?!docker的作用是什么?! 一、下载docker1.卸载docker2.安装yum环境3.更新yum本地软件源4.安装Docker(参数ce:社区版)5.Docker使用中会涉及到各种端口,为了…

网络安全进阶学习第二十一课——XXE

文章目录 一、XXE简介二、XXE原理三、XXE危害四、XXE如何寻找五、XXE限制条件六、XXE分类七、XXE利用1、读取任意文件1.1、有回显1.2、没有回显 2、命令执行(情况相对较少见)3、内网探测/SSRF4、拒绝服务攻击(DDoS)4.1、内部实体4.2、参数实体 八、绕过基…

【漏洞复现】Fastjson_1.2.47_rce

感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞检测3、漏洞验证 1.5、深度利用1、反弹Shell 说明内容漏洞编号漏洞名称Fastjson_1.2.47_远程执行漏…

React基础知识02

一、通过属性来传值(props) react中可以使用属性(props)可以传递给子组件,子组件可以使用这些属性值来控制其行为和呈现输出。 例子: // 1.1 父组件 import React, { useState } from react // 1.2引入子…

java 数据结构 ArrayList源码底层 LinkedList 底层源码 迭代器底层

文章目录 数据结构总结ArrayList源码底层LinkedList底层源码 迭代器底层 数据结构 对于数据结构我这边只告诉你右边框框里的 栈的特点:后进先出,先进后出,入栈也成为压栈,出栈也成为弹栈 栈就像一个弹夹 队列先进先出后进后出 队列像排队 链表查询满 但是增删快(相对于数组而…

Java基于springboot开发的景点旅游项目

演示视频 https://www.bilibili.com/video/BV1cj411Y7UK/?share_sourcecopy_web&vd_source11344bb73ef9b33550b8202d07ae139b 主要功能:用户可浏览搜索旅游景点(分为收费和免费景点),购票(支持多规格套餐购票&am…

Unity3D实现页面的滑动切换功能

效果展示 Unity3D实现页面的滑动切换 效果 文章目录 前言一、先上代码二、创建UI1.创建Scroll View如下图,并挂载该脚本:2.Content下创建几个Itme 总结 前言 好记性不如烂笔头! 一、先上代码 /*******************************************…

日语动词三分类

所有的动词原形都是由う段结尾 50音图 一类动词 一类动词又称五段动词(う段动词) 1.结尾是う段非る的动词 日文平假名中文書くかく写探すさがす寻找勝つかつ胜利遊ぶあそぶ玩耍読むよむ阅读 2.あ段る、う段る、お段る 日文平假名中文困るこまる使为…