数据类型3.4深浅拷贝

浪尽此生 提交于 2019-12-19 03:38:26

若a = dict(),令 b = a,执行b.update({"x":1}),a亦改变,为何,如何避免

dict_a = dict()
dict_b = dict_a    #直接赋值
dict_b.update  ({"name":"lisi"})
print(dict_a,dict_b)
print(id(dict_a),id(dict_b))

输出结果:

{'name': 'lisi'} {'name': 'lisi'}
4074228 4074228

Process finished with exit code 0

一摸一样,数据和地址都跟着一起改变

解决方法:使用拷贝

a = {"name":"zhangsan","age":18,}
b = copy.deepcopy(a)
b["name"] = "lisi"
print(a,b)
print(id(a),id(b))

输出结果:

{'name': 'zhangsan', 'age': 18} {'name': 'lisi', 'age': 18}
4074108 43224196

Process finished with exit code 0

PS:深浅拷贝对于只有一层的数据无差别,对于有嵌套的数据会有差别。浅拷贝只复制第一层。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!