浅谈Python 列表字典赋值的陷阱


Posted in Python onJanuary 20, 2019

今天在用python刷leetcode 3Sum problem时,调入到了一个大坑中,检查半天并没有任何逻辑错误,但输出结果却总是不对,最终通过调试发现原来python中list和dict类型直接赋值竟然是浅拷贝!!!因此,在实际实验中,若要实现深拷贝,建立新list或dict,使新建的list或dict变量和以前的变量只是具有相同的值,但是却具有不同的存储地址,保证在改变以前的list变量的时候,不会对新的list产生任何影响。

python中的深拷贝的实现需要通过copy.deepcopy函数来实现。

具体操作如下:

# python
>>> from copy import deepcopy

- 关于dict的深浅拷贝实验示例

>>> a=dict() #建立字典
>>> a['e1']=1 #添加字典元素
>>> a['e2']=2
>>> a #查看字典内容,输出如下
{'e1': 1, 'e2': 2}

>>> b=a #浅拷贝

>>> c=deepcopy(a) #深拷贝

>>> a['e1']=3 #改变字典的内容,观察深浅拷贝变量的变化

>>> a
{'e1': 3, 'e2': 2}
>>> b
{'e1': 3, 'e2': 2}
>>> c
{'e1': 1, 'e2': 2}

- 关于list的深浅拷贝实验示例

>>> a=[1, 2, 2, 3] 
>>> b=deepcopy(a)
>>> c=a
>>> a.remove(2) #去掉列表a中的2,注意一次remove只去掉一个元素

>>> a
[1, 2, 3]
>>> b
[1, 2, 2, 3] 
>>> c
[1, 2, 3]

以上这篇浅谈Python 列表字典赋值的陷阱就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现批量把SVG格式转成png、pdf格式的代码分享
Aug 21 Python
Python实现PS滤镜的旋转模糊功能示例
Jan 20 Python
Python3.4实现远程控制电脑开关机
Feb 22 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
Jun 04 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
python实现给微信指定好友定时发送消息
Apr 29 Python
Python3中urlencode和urldecode的用法详解
Jul 23 Python
django的ORM操作 删除和编辑实现详解
Jul 24 Python
浅析python,PyCharm,Anaconda三者之间的关系
Nov 27 Python
使用TensorFlow-Slim进行图像分类的实现
Dec 31 Python
django的模型类管理器——数据库操作的封装详解
Apr 01 Python
如何用Python徒手写线性回归
Jan 25 Python
对python中词典的values值的修改或新增KEY详解
Jan 20 #Python
解决python字典对值(值为列表)赋值出现重复的问题
Jan 20 #Python
Python字典循环添加一键多值的用法实例
Jan 20 #Python
在PyCharm中批量查找及替换的方法
Jan 20 #Python
Python 移动光标位置的方法
Jan 20 #Python
Pycharm之快速定位到某行快捷键的方法
Jan 20 #Python
python实现画五角星和螺旋线的示例
Jan 20 #Python
You might like
PHP 获取文件权限函数介绍
2013/07/11 PHP
php实现模拟登陆方正教务系统抓取课表
2015/05/19 PHP
PHP实现搜索相似图片
2015/09/22 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
常用Extjs工具:Extjs.util.Format使用方法
2012/03/22 Javascript
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
向左滚动文字 js代码效果
2013/08/17 Javascript
javascript关于继承解析
2016/05/10 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
令按钮悬浮在(手机)页面底部的实现方法
2017/05/02 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
vue+vux实现移动端文件上传样式
2017/07/28 Javascript
angular4 如何在全局设置路由跳转动画的方法
2017/08/30 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
tsconfig.json配置详解
2019/05/17 Javascript
前端开发之便利店收银系统代码
2019/12/27 Javascript
JS实现简单的表格增删
2020/01/16 Javascript
[44:30]完美世界DOTA2联赛PWL S2 GXR vs Magma 第一场 11.25
2020/11/26 DOTA
Python中用sleep()方法操作时间的教程
2015/05/22 Python
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
基于Django的python验证码(实例讲解)
2017/10/23 Python
python实现字符串加密成纯数字
2019/03/19 Python
DRF框架API版本管理实现方法解析
2020/08/21 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
护士辞职信怎么写
2015/02/27 职场文书
军事博物馆观后感
2015/06/05 职场文书
Django中的JWT身份验证的实现
2021/05/07 Python
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫