浅谈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实现简单的文件传输与MySQL备份的脚本分享
Jan 03 Python
Python实现Smtplib发送带有各种附件的邮件实例
Jun 05 Python
python实现日常记账本小程序
Mar 10 Python
python UDP(udp)协议发送和接收的实例
Jul 22 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
Jul 31 Python
Python基础之字典常见操作经典实例详解
Feb 26 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
Feb 29 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
Mar 01 Python
PyTorch中的C++扩展实现
Apr 02 Python
Python包和模块的分发详细介绍
Jun 19 Python
python中time、datetime模块的使用
Dec 14 Python
Python实现邮件发送的详细设置方法(遇到问题)
Jan 18 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
Smarty分页实现方法完整实例
2016/05/11 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
JS启动应用程序的一个简单例子
2008/05/11 Javascript
javascript使用activex控件的代码
2011/01/27 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
跟我学习javascript创建对象(类)的8种方法
2015/11/20 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
2017/03/21 Javascript
nodejs中Express与Koa2对比分析
2018/02/06 NodeJs
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
手把手带你入门微信小程序新框架Kbone的使用
2020/02/25 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
Python实现获取操作系统版本信息方法
2015/04/08 Python
将python代码和注释分离的方法
2018/04/21 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
全球虚拟主机商:HostGator
2017/02/06 全球购物
如何实现一个自定义类的序列化
2012/05/22 面试题
监理员的岗位职责
2013/11/13 职场文书
党校个人自我鉴定范文
2014/03/28 职场文书
自愿离婚协议书范本
2015/01/26 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
2016年党建工作简报
2015/11/26 职场文书
2016年青少年禁毒宣传教育活动总结(学校)
2016/04/05 职场文书
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL