Python 中的 copy()和deepcopy()
程序员文章站
2022-03-22 12:52:57
目录1、copy.copy()2、deepcopy.copy()前言:在处理列表和字典时,尽管传递引用常常是最方便的方法,但如果函数修改了传入的列表或字典,可能不希望这些变动影响原来的列表或字典。要做...
前言:
在处理列表和字典时,尽管传递引用常常是最方便的方法,但如果函数修改了传入的列表或字典,可能不希望这些变动影响原来的列表或字典。要做到这一点,python
提供了名为copy
的模块,其中包含copy()
和deepcopy()
函数。
第一个函数copy.copy()
,可以用来复制列表或字典这样的可变值,而不是只复制引用。
两者的区别是copy.copy()
是这复制了列表或字典的值,但是引用还是同一个。而copy.deepcopy()
是产生一个新的引用使新的变量和被复制变量引用不同。
看下面的示例代码:
1、copy.copy()
示例代码:
import copy spam = ['a','b','c','d',[1,2,3,4]] cheese = copy.copy(spam) spam[0] = 42 print(spam)
运行结果:
[42,'b','c','d',[1,2,3,4]]
根据结果可以看出,使用copy.copy()
函数时,cheese
是复制了spam
列表引用,对spam
列表操作时,也会对cheese
列表产生影响。这也被称为浅copy
。
2、deepcopy.copy()
示例代码:
#python学习交流群:778463939 import copy spam = ['a','b','c','d',[1,2,3,4]] cheese = copy.deepcopy(spam)#不同部分 spam[0] = 42 print(spam)
运行结果:
[42,'b','c','d',[1,2,3,4]]
根据结果可以看出,使用deepcopy()
时,对spam
列表操作不会对cheese
列表产生影响,这是因为deepcopy()
是产生一个新的引用,这样spam
和cheese
是两个不同的引用所以在对spam
列表操作时不会对cheese列表产生影响。
到此这篇关于python 中的 copy()和deepcopy()的文章就介绍到这了,更多相关python copy()和deepcopy()内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
-
Linux中df命令查询磁盘信息和fdisk命令分区的用法
-
Linux系统中列出PCI设备和USB设备的命令详解
-
Python 3中的yield from语法详解
-
设计一个算法:用不多于3n/2的平均比较次数,在数组A[1,...,n]中找出最大值和最小值的元素
-
设计一个最优算法来查找一n个元素数组中的最大值和最小值
-
python -- 找出列表list中的重复元素
-
从零学Python之引用和类属性的初步理解
-
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
-
使用Python中PDB模块中的命令来调试Python代码的教程
-
JavaScript中的apply()方法和call()方法使用介绍_javascript技巧