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列表,但是最终输出的列表结果却没有受到影响。这是因为深拷贝复制了对象及其所有子对象的内容,两个列表拥有各自独立的内存空间。

相关推荐
民乐团扒谱机8 分钟前
【微实验】Python——量子增强时频传递的精度量化
人工智能·python·aigc·量子力学·时空·参数敏感性·光量子
Feibo201121 分钟前
管理agent
python
牛奔28 分钟前
Linux 的日志分析命令
linux·运维·服务器·python·excel
电化学仪器白超28 分钟前
20251209Ver8(精密电流源温漂特性测试报告)
python·单片机·嵌入式硬件·自动化
昵称已被吞噬~‘(*@﹏@*)’~30 分钟前
【强化学习】MacOS (M1芯片)上最新版本 MuJoCo 通用安装教程(最简洁),PS:不是 mujoco_py 的老版本
python·macos·机器学习·强化学习·mujoco
沃斯堡&蓝鸟35 分钟前
DAY33 类的装饰器
开发语言·python
Tipriest_37 分钟前
Python构建包,打包.whl文件,使用.whl文件安装包指南
python·whl
BoBoZz1944 分钟前
ColorEdges 动态有向图的动态渲染
python·vtk·图形渲染·图形处理
彼岸花开了吗1 小时前
构建AI智能体:六十九、Bootstrap采样在大模型评估中的应用:从置信区间到模型稳定性
人工智能·python·llm
echo的PHP开发1 小时前
如何获取苹果手机的 XcodeOrgId
python·智能手机·苹果手机