python中的深浅拷贝

先定义一个字典,有嵌套的列表子对象,通过深浅拷贝之后看结果

import copy
student_info = {'name':'Nancy','sex':'female','subject':['PE','math','chinese']}

进行浅拷贝操作

shallow_student_info = student_info.copy()

进行深拷贝操作

deep_student_info = copy.deepcopy(student_info)

修改student_info字典变量

student_info['subject'][0] = 'english'

打印深浅拷贝结果

print(f"shallow_student_info:{shallow_student_info}")  # 浅拷贝
print(f"deep_student_info: {deep_student_info}")   #深拷贝

查看运行结果

shallow_student_info:{'name': 'Nancy', 'sex': 'female', 'subject': ['english', 'math', 'chinese']}  

deep_student_info: {'name': 'Nancy', 'sex': 'female', 'subject': ['PE', 'math', 'chinese']}

通过运行的结果可以看出,修改了原来student_info列表信息
浅拷贝的变量shallow_student_info也跟着变了
深拷贝的变量deep_student_info没有发生变化

总结:

父对象:最外层容器
子对象:嵌套容器就是子对象
1、浅拷贝是拷贝父对象,引用子对象,如子对象是列表,拷贝的就是内存地址
2、深拷贝是拷贝父对象和子对象
3、深拷贝只在嵌套的容器对象内使用才有意义

程序中使用的拷贝一般是浅拷贝,具有拷贝速度快、效率高,占用空间少的优势

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值