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

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

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

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

python 复制代码
import copy

什么是浅拷贝和深拷贝

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

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

copy模块提供了两种方法:

  • copy()
  • deepcopy()

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

浅拷贝(copy)

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

python 复制代码
import copy

original_list = [1, 2, [3, 4]]
shallow_copy = copy.copy(original_list)

shallow_copy[2][0] = 99

print(original_list)  

以上代码输出的实例:

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

深复制(deepcopy)

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

python 复制代码
import copy

original_list = [1, 2, [3, 4]]
deep_copy = copy.deepcopy(original_list)

deep_copy[2][0] = 99

print(original_list)  

以上代码输出的实例:

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

相关推荐
三年呀10 分钟前
标题:移动端安全加固:发散创新,筑牢安全防线引言:随着移动互联网
网络·python·安全
关山1 小时前
MCP实战
python·ai编程·mcp
悠哉悠哉愿意2 小时前
【Python语法基础学习笔记】if语句
笔记·python·学习
Q_Q19632884752 小时前
python的电影院座位管理可视化数据分析系统
开发语言·spring boot·python·django·flask·node.js·php
BYSJMG2 小时前
计算机大数据毕业设计推荐:基于Hadoop+Spark的食物口味差异分析可视化系统【源码+文档+调试】
大数据·hadoop·分布式·python·spark·django·课程设计
杜子不疼.2 小时前
《Python学习之第三方库:开启无限可能》
开发语言·python·学习
青衫客363 小时前
用 Python 实现一个“小型 ReAct 智能体”:思维链 + 工具调用 + 环境交互
python·大模型·llm·react
小张的博客之旅3 小时前
宁波市第八届网络安全大赛初赛(REVERSE-Writeup)
学习·网络安全·reverse
AI视觉网奇3 小时前
音频分类模型笔记
人工智能·python·深度学习
Ratten4 小时前
【Python 实战】---- 实现一个可选择、配置操作的批量文件上传工具(四)配置管理界面和逻辑实现
python