浅谈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使用cPickle模块序列化实例
Sep 25 Python
Python中的zip函数使用示例
Jan 29 Python
python通过apply使用元祖和列表调用函数实例
May 26 Python
python相似模块用例
Mar 04 Python
SQLite3中文编码 Python的实现
Jan 11 Python
Python创建xml文件示例
Mar 22 Python
Python开发的HTTP库requests详解
Aug 29 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
Feb 26 Python
django 解决扩展自带User表遇到的问题
May 14 Python
Python新手学习函数默认参数设置
Jun 03 Python
python实现在列表中查找某个元素的下标示例
Nov 16 Python
python的html标准库
Apr 29 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生成缩略图的函数代码(修改版)
2011/01/18 PHP
php 中英文语言转换类
2011/09/07 PHP
PHP中其实也可以用方法链
2011/11/10 PHP
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
JS 对象属性相关(检查属性、枚举属性等)
2015/04/05 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
微信小程序仿朋友圈发布动态功能
2018/07/15 Javascript
vue实现购物车小案例
2019/09/27 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
在Python中使用__slots__方法的详细教程
2015/04/28 Python
python中实现k-means聚类算法详解
2017/11/11 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
python实现两个文件夹的同步
2019/08/29 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
关于Keras模型可视化教程及关键问题的解决
2020/01/24 Python
Python实现分数序列求和
2020/02/25 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
英语专业毕业个人求职自荐信
2013/09/21 职场文书
教师队伍管理制度
2014/01/14 职场文书
节约能源标语
2014/06/17 职场文书
乡镇消防安全责任书
2014/07/23 职场文书
导师对论文的学术评语
2015/01/04 职场文书
2015年度党员个人总结
2015/02/14 职场文书
2015新学期开学寄语
2015/02/26 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
寒假生活随笔
2015/08/15 职场文书
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android
Nginx反向代理学习实例教程
2021/10/24 Servers
JavaScript执行机制详细介绍
2021/12/06 Javascript