博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python字典复制(浅拷贝and深拷贝)
阅读量:4171 次
发布时间:2019-05-26

本文共 1862 字,大约阅读时间需要 6 分钟。

1》
>>> d
{'age': 25, 'name': 'song'}
>>> d1=d#将d中的引用(地址)传给d1,d和d1中存放了相同的地址,指向的是同一个字典。
>>> d
{'age': 25, 'name': 'song'}
>>> d1
{'age': 25, 'name': 'song'}
>>> id(d)
49069920
>>> id(d1)
49069920
>>> id(d['age'])
7107952
>>> id(d1['age'])
7107952
>>> d['age']=21
>>> d
{'age': 21, 'name': 'song'}
>>> d1
{'age': 21, 'name': 'song'}
上述代码可用下图解释:
2》
>>> d={'age': 25, 'name': 'song'}
>>> d1={'age': 25, 'name': 'song'}
>>> d
{'age': 25, 'name': 'song'}
>>> d1
{'age': 25, 'name': 'song'}
>>> id(d)
49249424
>>> id(d1)
49585440
>>> id(d['name'])
49649312
>>> id(d1['name'])
49649312
>>> d['name']='wahaha'#修改字典d
>>> d
{'age': 25, 'name': 'wahaha'}
>>> d1
{'age': 25, 'name': 'song'}
>>> id(d['name'])
49649248
>>> id(d1['name'])
49649312
上述代码可用下图解释:
3》
>>> d={'age':25,'score':[90,99,100]}
>>> d1=d.copy()#浅拷贝
>>> d
{'age': 25, 'score': [90, 99, 100]}
>>> d1
{'age': 25, 'score': [90, 99, 100]}
>>> id(d)
49585152
>>> id(d1)
49585872
>>> id(d['score'])
6829120
>>> id(d1['score'])
6829120
>>> d['score'][2]=80
>>> d
{'age': 25, 'score': [90, 99, 80]}
>>> d1
{'age': 25, 'score': [90, 99, 80]}
上述代码可用下图来解释:
4》
>>> import copy
>>> d={'age':25,'score':[90,99,100]}
>>> d1=copy.copy(d)#浅拷贝
>>> d
{'age': 25, 'score': [90, 99, 100]}
>>> d1
{'age': 25, 'score': [90, 99, 100]}
>>> d['score'][2]=80
>>> d
{'age': 25, 'score': [90, 99, 80]}
>>> d1
{'age': 25, 'score': [90, 99, 80]}
copy.copy(d)与d.copy()都是浅拷贝,效果一样,此处就不画图了。
5》
>>> import copy
>>> d={'age':25,'score':[90,99,100]}
>>> d1=copy.deepcopy(d)
>>> d
{'age': 25, 'score': [90, 99, 100]}
>>> d1
{'age': 25, 'score': [90, 99, 100]}
>>> d['score'][2]=80
>>> d
{'age': 25, 'score': [90, 99, 80]}
>>> d1
{'age': 25, 'score': [90, 99, 100]}
>>> id(d)
51137104
>>> id(d1)
51137536
>>> id(d['score'][1])
38959544
>>> id(d1['score'][1])
38959544
>>> id(d['score'][2])
38959772
>>> id(d1['score'][2])
38959532

上述代码可用下面图片解释:

(完)

你可能感兴趣的文章
Pentaho BI开源报表系统
查看>>
Pentaho 开发: 在eclipse中构建Pentaho BI Server工程
查看>>
android中SharedPreferences的简单例子
查看>>
android中使用TextView来显示某个网址的内容,使用<ScrollView>来生成下拉列表框
查看>>
andorid里关于wifi的分析
查看>>
Hibernate和IBatis对比
查看>>
Spring MVC 教程,快速入门,深入分析
查看>>
Android 的source (需安装 git repo)
查看>>
LOCAL_PRELINK_MODULE和prelink-linux-arm.map
查看>>
Ubuntu Navicat for MySQL安装以及破解方案
查看>>
java多线程中的join方法详解
查看>>
idea添加gradle模块报错The project is already registered
查看>>
在C++中如何实现模板函数的外部调用
查看>>
HTML5学习之——HTML 5 拖放
查看>>
HTML5学习之——HTML 5 Canvas vs. SVG
查看>>
HTML5学习之——HTML 5 应用程序缓存
查看>>
HTML5学习之——HTML 5 Web Workers
查看>>
HTML5学习之——HTML 5 Canvas
查看>>
HTML5学习之——HTML5 内联 SVG
查看>>
HTML5学习之——HTML 5 服务器发送事件
查看>>