浅谈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学生信息管理系统
Mar 13 Python
PyTorch快速搭建神经网络及其保存提取方法详解
Apr 28 Python
详解Django+uwsgi+Nginx上线最佳实战
Mar 14 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
python内置函数sorted()用法深入分析
Oct 08 Python
在tensorflow中实现屏蔽输出的log信息
Feb 04 Python
深入浅析python变量加逗号,的含义
Feb 22 Python
PyCharm2019 安装和配置教程详解附激活码
Jul 31 Python
python logging模块的使用详解
Oct 23 Python
python Pexpect模块的使用
Dec 25 Python
Python实现视频中添加音频工具详解
Dec 06 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
摩卡咖啡
2021/03/03 咖啡文化
PHP中用正则表达式清除字符串的空白
2011/01/17 PHP
destoon供应信息title调用出公司名称的方法
2014/08/22 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
javascript数组去重方法汇总
2015/04/23 Javascript
JQuery包裹DOM节点的方法
2015/06/11 Javascript
AngularJs concepts详解及示例代码
2016/09/01 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
深入理解vue $refs的基本用法
2017/07/13 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
浅析vue中的MVVM实现原理
2019/03/04 Javascript
vue组件之间的数据传递方法详解
2019/04/19 Javascript
vue+elementUI实现图片上传功能
2019/08/20 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
Hanky Panky官方网站:内衣和睡衣
2019/07/25 全球购物
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
大学生优秀的自我评价分享
2013/10/22 职场文书
安全事故检讨书
2014/01/18 职场文书
《守株待兔》教学反思
2014/03/01 职场文书
《谁的本领大》教后反思
2014/04/25 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
校长一岗双责责任书
2015/05/09 职场文书