浅谈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实现360的字符显示界面
Feb 21 Python
以一段代码为实例快速入门Python2.7
Mar 31 Python
Python基于回溯法子集树模板解决0-1背包问题实例
Sep 02 Python
Python学习小技巧总结
Jun 10 Python
python使用numpy读取、保存txt数据的实例
Oct 14 Python
解决python 无法加载downsample模型的问题
Oct 25 Python
对python列表里的字典元素去重方法详解
Jan 21 Python
Python 数据可视化pyecharts的使用详解
Jun 26 Python
python tkinter之 复选、文本、下拉的实现
Mar 04 Python
pandas数据拼接的实现示例
Apr 16 Python
pycharm2020.1.2永久破解激活教程,实测有效
Oct 29 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 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 UTF8编码内的繁简转换类
2009/07/20 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
2015/12/14 PHP
开启PHP的伪静态模式
2015/12/31 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
基于jquery的tab切换 js原理
2010/04/01 Javascript
JavaScript中yield实用简洁实现方式
2010/06/12 Javascript
固定背景实现的背景滚动特效示例分享
2013/05/19 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
laydate时间日历插件使用方法详解
2018/11/14 Javascript
浅析vue中的MVVM实现原理
2019/03/04 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
JavaScript鼠标拖拽事件详解
2020/04/03 Javascript
分享vim python缩进等一些配置
2018/07/02 Python
python实现邮件自动发送
2019/08/10 Python
python滑块验证码的破解实现
2019/11/10 Python
浅谈Python类中的self到底是干啥的
2019/11/11 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
Python中zip函数如何使用
2020/06/04 Python
Python监听剪切板实现方法代码实例
2020/11/11 Python
Otel.com:折扣酒店预订
2017/08/24 全球购物
EJB的几种类型
2012/08/15 面试题
财务主管的岗位职责
2013/12/30 职场文书
生态养殖创业计划书
2014/05/06 职场文书
2014年班干部工作总结
2014/11/25 职场文书
党员干部廉洁自律承诺书
2015/04/28 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技