这篇教程Python 中的 copy()和deepcopy()写得很实用,希望能帮到您。 前言: 在处理列表和字典时,尽管传递引用常常是最方便的方法,但如果函数修改了传入的列表或字典,可能不希望这些变动影响原来的列表或字典。要做到这一点,Python 提供了名为copy 的模块,其中包含copy() 和deepcopy() 函数。 第一个函数copy.copy() ,可以用来复制列表或字典这样的可变值,而不是只复制引用。 两者的区别是copy.copy() 是这复制了列表或字典的值,但是引用还是同一个。而copy.deepcopy() 是产生一个新的引用使新的变量和被复制变量引用不同。 看下面的示例代码:
1、copy.copy()示例代码: import copyspam = ['A','B','C','D',[1,2,3,4]]cheese = copy.copy(spam)spam[0] = 42print(spam) 运行结果: [42,'B','C','D',[1,2,3,4]]
根据结果可以看出,使用copy.copy() 函数时,cheese 是复制了spam 列表引用,对spam 列表操作时,也会对cheese 列表产生影响。这也被称为浅copy 。
2、deepcopy.copy()示例代码: #Python学习交流群:778463939import copyspam = ['A','B','C','D',[1,2,3,4]]cheese = copy.deepcopy(spam)#不同部分spam[0] = 42print(spam) 运行结果: [42,'B','C','D',[1,2,3,4]]
根据结果可以看出,使用deepcopy() 时,对spam 列表操作不会对cheese 列表产生影响,这是因为deepcopy() 是产生一个新的引用,这样spam 和cheese 是两个不同的引用所以在对spam 列表操作时不会对cheese列表产生影响。 到此这篇关于Python 中的 copy()和deepcopy()的文章就介绍到这了,更多相关Python copy()和deepcopy()内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net! Python MNIST手写体识别详解与试练 python中取整数的几种方法 |