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

相关推荐
xiaotao13110 分钟前
01-编程基础与数学基石: Python核心数据结构完全指南
数据结构·人工智能·windows·python
青苔猿猿10 分钟前
【1】JupyterLab安装
python·jupyter
xiaoyaohou1112 分钟前
023、数据增强改进(二):自适应数据增强与AutoAugment策略
开发语言·python
鬼圣13 分钟前
Python 上下文管理器
开发语言·python
努力学习_小白38 分钟前
ResNet-50——pytorch版
人工智能·pytorch·python
战族狼魂1 小时前
基于LibreOffice +python 实现一个小型销售管理系统的数据库原型教学实验
数据库·python
m0_640309301 小时前
PHP函数怎样适配高可靠性存储硬件_PHP在ZFS RAIDZ环境配置【技巧】
jvm·数据库·python
2402_854808371 小时前
Django REST Framework 中实现用户资料更新的完整实践指南
jvm·数据库·python
m0_748839491 小时前
golang如何理解weak pointer弱引用_golang weak pointer弱引用总结
jvm·数据库·python
m0_738120721 小时前
渗透测试基础ctfshow——Web应用安全与防护(五)
前端·网络·数据库·windows·python·sql·安全