python字典的浅拷贝和深拷贝

使用字典中的copy方法可以实现一个字典的浅拷贝。copy
方法的语法格式为:d.copy()
其作用是返回一个对字典d进行浅拷贝而得到的新字典。
浅拷贝实例

stu1={'姓名':'小明','年龄':19,'score':{'python':95}}
stu2=stu1  #直接赋值,此时stu2和stu1指向同一个字典对象
stu3=stu1.copy() #使用copy方法进行浅拷贝
print('stu1、stu2和stu3的内存地址分别为:',id(stu1),id(stu2),id(stu3))
stu1['name']='马红' #将stu1中键为name的元素的值修改为#'马红'
print('stu1的值为:',stu1)
print('stu2的值为:',stu2)
print('stu3的值为:',stu3)
print("stu1['score']和stu3['score']的内存地址分别为:",id(stu1['score']), id(stu3['score']))
stu1['score']['python']=100
print('stu1的值为:',stu1)
print('stu3的值为:',stu3)

结果:在这里插入图片描述
可以发现stu1[‘score’][‘python’]=100
更改了stu3对应的值
**

深拷贝

使用copy模块的deepcopy方法可以实现深拷贝,deepcopy方法的
语法格式为: copy.deepcopy(d)
深拷贝不仅使得原有字典对象和生成的字典对象对应不同的内存空间,而且使得两个字典对象中的可变类型元素对应不同的内存空间,从而使得两个字典对象完全独立。其作用是根据字典d进行深拷贝创建一个新的字典对象并返回。

深拷贝实例

import copy #导入copy模块
stu1={'name':'李晓明','age':19,'score':{'python':95,'math':92}}
stu2=copy.deepcopy(stu1) #使用deepcopy方法进行深拷贝
print("stu1和stu2的内存地址分别为:", id(stu1), id(stu2))
print("stu1['score']和stu2['score']的内存地址分别为:",id(stu1['score']), id(stu2['score']))
stu1['score']['python']=100
print('stu1的值为:',stu1)
print('stu2的值为:',stu2)

结果在这里插入图片描述

总结:

经过两种拷贝的对比,可以发现,深拷贝不仅使得原有字典对象和生成的字典对象对应不同的内存空间,而且使得两个字典对象中的可变类型元素对应不同的内存空间,从而使得两个字典对象完全独立。其作用是根据字典d进行深拷贝创建一个新的字典对象并返回。
而浅拷贝只不能使得两个字典对象中的可变类型元素对应不同的内存空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值