浅谈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爬虫之urllib2使用指南
Nov 05 Python
python在windows命令行下输出彩色文字的方法
Mar 19 Python
Python的Tornado框架的异步任务与AsyncHTTPClient
Jun 27 Python
Python numpy实现数组合并实例(vstack,hstack)
Jan 09 Python
用python爬取租房网站信息的代码
Dec 14 Python
对Python w和w+权限的区别详解
Jan 23 Python
深入理解Python异常处理的哲学
Feb 01 Python
Python3 执行Linux Bash命令的方法
Jul 12 Python
python matplotlib中的subplot函数使用详解
Jan 19 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 Python
Python如何向SQLServer存储二进制图片
Jun 08 Python
通过实例简单了解Python sys.argv[]使用方法
Aug 04 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之第四天
2006/10/09 PHP
PHP中动态显示签名和ip原理
2007/03/28 PHP
fgetcvs在linux的问题
2012/01/15 PHP
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
javascript 操作符(~、&、|、^、)使用案例
2014/12/31 Javascript
JavaScript中模拟实现jsonp
2015/06/19 Javascript
基于OL2实现百度地图ABCD marker的效果
2015/10/01 Javascript
微信小程序 同步请求授权的详解
2017/08/04 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
用python代码做configure文件
2014/07/20 Python
python实现两个文件合并功能
2018/04/01 Python
python搭建服务器实现两个Android客户端间收发消息
2018/04/12 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
浅述python中深浅拷贝原理
2018/09/18 Python
Python3.4解释器用法简单示例
2019/03/22 Python
详解如何设置Python环境变量?
2019/05/13 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
python+logging+yaml实现日志分割
2019/07/22 Python
python多进程并发demo实例解析
2019/12/13 Python
Django ORM 查询表中某列字段值的方法
2020/04/30 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
苏格兰销售女装、男装和童装的连锁店:M&Co
2018/03/16 全球购物
具有防紫外线功能的高性能钓鱼服装:Hook&Tackle
2018/08/16 全球购物
新奥尔良珠宝:Mignon Faget
2020/11/23 全球购物
EJB的几种类型
2012/08/15 面试题
医学专业毕业生推荐信
2013/11/14 职场文书
《小草和大树》教学反思
2014/02/16 职场文书
经理岗位职责范本
2015/04/15 职场文书
中学图书馆工作总结
2015/08/11 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python
教你用Python爬取英雄联盟皮肤原画
2021/06/13 Python