浅谈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开发的nosql数据库CodernityDB介绍和使用实例
Oct 23 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
Mar 19 Python
详解Python的Lambda函数与排序
Oct 25 Python
浅谈dataframe中更改列属性的方法
Jul 10 Python
python 实现对数据集的归一化的方法(0-1之间)
Jul 17 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
Oct 09 Python
Python GUI编程 文本弹窗的实例
Jun 11 Python
python3 Scrapy爬虫框架ip代理配置的方法
Jan 17 Python
Python re正则表达式元字符分组()用法分享
Feb 10 Python
Windows 下python3.8环境安装教程图文详解
Mar 11 Python
python实现一次性封装多条sql语句(begin end)
Jun 06 Python
Python爬虫之Selenium实现窗口截图
Dec 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
咖啡的植物学知识
2021/03/03 咖啡文化
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
PHP 时间日期操作实战
2011/08/26 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
2017/04/20 PHP
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
JavaScript获取网页中第一个图片id的方法
2015/04/03 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
详解Vue中添加过渡效果
2017/03/20 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
微信小程序实现展示评分结果功能
2019/02/15 Javascript
解决layui富文本编辑器图片上传无法回显的问题
2019/09/18 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
python通过post提交数据的方法
2015/05/06 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
2019/08/09 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
2020/07/14 Python
python 如何实现遗传算法
2020/09/22 Python
Python jieba库分词模式实例用法
2021/01/13 Python
open_basedir restriction in effect. 原因与解决方法
2021/03/14 PHP
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
高档奢华时装在线目的地:FORWARD by elyse walker
2017/10/16 全球购物
Java的接口和C++的虚类的相同和不同处
2014/03/27 面试题
顺丰快递Java软件工程师面试题
2015/07/31 面试题
法学专业应届生求职信
2013/10/16 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
地球一小时活动总结
2015/02/27 职场文书
检察院起诉意见书
2015/05/20 职场文书
介绍信应该怎么开?
2019/04/03 职场文书
PHP获取学生成绩的方法
2021/11/17 PHP