Python的深copy和浅copy

枫铃3年前 (2021-09-30)Python189
  • 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
  • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

浅copy:

a = [1, 2, [1, 2, 3]]
b = a.copy()
print(a)
print(b)

a.append(4)
a[2][0] = 0
print(a)
print(b)

输出结果:

[1, 2, [1, 2, 3]]
[1, 2, [1, 2, 3]]
[1, 2, [0, 2, 3], 4]
[1, 2, [0, 2, 3]]

浅copy只复制了第一层数据,列表里存储的子列表其实储存的是内存地址,所以只复制了子列表的地址,当子列表变化时跟着变化

深copy:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import copy
a = [1, 2, [1, 2, 3]]
b = copy.deepcopy(a)
print(a)
print(b)

a.append(4)
a[2][0] = 0
print(a)
print(b)

输出结果:

[1, 2, [1, 2, 3]]
[1, 2, [1, 2, 3]]
[1, 2, [0, 2, 3],4]
[1, 2, [1, 2, 3]]

同样的操作,换成深copy之后,复制之后子列表中的值不会跟着变化(将原来的数据完全复制了一遍)

相关文章

Django 函数和方法的区别

函数和方法的区别 1、函数要手动传self,方法不用传 2、如果是一个函数,用类名去调用,如果是一个方法...

Python模块的四种形式

Python模块的四种形式

一、什么是模块? 模块是一系列功能的集合体,而函数是某一个功能的集合体,因此模块可以看成是一堆函数的集合体。一个p...

python-unittest添加用例的几种方式

关于HTMLTestRunner生成测试报告问题: 1、pycharm 在运行测试用例的时候 默认是以unittest 框架来运行的࿰...

Python面试题 :计算列表中出现最多次的字符

给你一个其中包含不同的英...

Python中的测试工具

当我们在写程序的时候,我们需要通过测试来验证程序是否出错或者存在问题,但是,编写大量的测试来确保程序的每个细节都没问...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。