浅谈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在多玩图片上下载妹子图的实现代码
Aug 13 Python
使用python将mdb数据库文件导入postgresql数据库示例
Feb 17 Python
python模拟登陆阿里妈妈生成商品推广链接
Apr 03 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
Jun 26 Python
利用Python获取操作系统信息实例
Sep 02 Python
python运行其他程序的实现方法
Jul 14 Python
django定期执行任务(实例讲解)
Nov 03 Python
Django实现简单分页功能的方法详解
Dec 05 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
May 16 Python
使用虚拟环境打包python为exe 文件的方法
Aug 29 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
Sep 20 Python
解决pip安装的第三方包在PyCharm无法导入的问题
Oct 15 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
PHP4中实现动态代理
2006/10/09 PHP
PHP 读取Postgresql中的数组
2013/04/14 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
2013/04/15 PHP
探讨方法的重写(覆载)详解
2013/06/08 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
优化javascript的执行速度
2010/01/23 Javascript
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
angularjs中回车键触发某一事件的方法
2017/04/24 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
微信小程序图片轮播组件gallery slider使用方法详解
2018/01/31 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
js实现简易计算器小功能
2020/11/18 Javascript
原生JavaScript实现幻灯片效果
2021/02/19 Javascript
Python利用前序和中序遍历结果重建二叉树的方法
2016/04/27 Python
Python中shutil模块的学习笔记教程
2017/04/04 Python
轻松理解Python 中的 descriptor
2017/09/15 Python
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
Python实现的txt文件去重功能示例
2018/07/07 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
python 基于opencv 绘制图像轮廓
2020/12/11 Python
施华洛世奇加拿大官网:SWAROVSKI加拿大
2018/06/03 全球购物
函授毕业生的自我鉴定
2013/11/26 职场文书
服装公司总经理岗位职责
2013/11/30 职场文书
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
产品生产计划书
2014/05/07 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
群众路线自我剖析范文
2014/11/04 职场文书
2015年元旦标语大全
2014/12/09 职场文书
Java SSM配置文件案例详解
2021/08/30 Java/Android