浅谈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小技巧分享
Nov 22 Python
Python实现获取操作系统版本信息方法
Apr 08 Python
Python中每次处理一个字符的5种方法
May 21 Python
Python编程中的异常处理教程
Aug 21 Python
详细介绍Python的鸭子类型
Sep 12 Python
在java中如何定义一个抽象属性示例详解
Aug 18 Python
Python3中详解fabfile的编写
Jun 24 Python
Python实现去除列表中重复元素的方法总结【7种方法】
Feb 16 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
python二进制文件的转译详解
Jul 03 Python
如何使用python代码操作git代码
Feb 29 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
Jul 21 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中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
php daodb插入、更新与删除数据
2009/03/19 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
2019/04/12 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
js中for in的用法示例解析
2013/12/25 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
JS中JSON对象和String之间的互转及处理技巧
2016/04/06 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
微信小程序下拉刷新界面的实现
2017/09/28 Javascript
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
2018/05/29 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
python实现的希尔排序算法实例
2015/07/01 Python
Python图像灰度变换及图像数组操作
2016/01/27 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
Python适配器模式代码实现解析
2019/08/02 Python
css3 flex实现div内容水平垂直居中的几种方法
2020/03/27 HTML / CSS
html5实现完美兼容各大浏览器的播放器
2014/12/26 HTML / CSS
澳大利亚领先的在线美容商店:Facial Co
2017/10/22 全球购物
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
澳大利亚家具商店:Freedom
2020/12/17 全球购物
电子技术专业中专生的自我评价
2013/12/17 职场文书
技校毕业生自荐信范文
2014/03/07 职场文书
经营理念标语
2014/06/21 职场文书
齐云山导游词
2015/02/06 职场文书
管理人员岗位职责
2015/02/14 职场文书
2015年毕业生实习评语
2015/03/25 职场文书
会议通知范文
2015/04/15 职场文书
在人间读书笔记
2015/06/30 职场文书
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python
php双向队列实例讲解
2021/11/17 PHP