浅谈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动态加载模块的3种方法
Nov 22 Python
利用Python爬虫给孩子起个好名字
Feb 14 Python
深入理解python中函数传递参数是值传递还是引用传递
Nov 07 Python
解决python3 网络请求路径包含中文的问题
May 10 Python
如何利用python制作时间戳转换工具详解
Sep 12 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
Jun 13 Python
python实现大文件分割与合并
Jul 22 Python
tesserocr与pytesseract模块的使用方法解析
Aug 30 Python
python manage.py runserver流程解析
Nov 08 Python
python/Matplotlib绘制复变函数图像教程
Nov 21 Python
logging level级别介绍
Feb 21 Python
Python抖音快手代码舞(字符舞)的实现方法
Feb 07 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
PHPMailer安装方法及简单实例
2008/11/25 PHP
PHP6 mysql连接方式说明
2009/02/09 PHP
php中session_unset与session_destroy的区别分析
2011/06/16 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
Yii使用技巧大汇总
2015/12/29 PHP
linux下为php添加iconv模块的方法
2016/02/28 PHP
PHP设计模式之模板模式定义与用法详解
2018/12/20 PHP
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
$.format,jquery.format 使用说明
2011/07/13 Javascript
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
javascript设计模式之中介者模式Mediator
2014/12/30 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
2016/03/07 Javascript
Node.js文件操作方法汇总
2016/03/22 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
2016/05/09 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
node.js学习之断言assert的使用示例
2017/09/28 Javascript
Vue中的vue-resource示例详解
2018/11/02 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
2020/03/03 Javascript
Python内置函数的用法实例教程
2014/09/08 Python
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
python使用threading获取线程函数返回值的实现方法
2017/11/15 Python
python机器学习实战之树回归详解
2017/12/20 Python
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
Python列表list操作相关知识小结
2020/01/29 Python
使用PDF.JS插件在HTML中预览PDF文件的方法
2018/08/29 HTML / CSS
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
英国的领先快速时尚零售商:In The Style
2019/03/25 全球购物
PHP如何设置和取得Cookie值
2015/06/30 面试题
在数据文件自动增长时,自动增长是否会阻塞对文件的更新
2014/05/01 面试题
上课讲话检讨书范文
2015/05/07 职场文书
入党自传范文2015
2015/06/26 职场文书