浅谈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 相关文章推荐
轻松实现TensorFlow微信跳一跳的AI
Jan 05 Python
Linux下Python安装完成后使用pip命令的详细教程
Nov 22 Python
python中的句柄操作的方法示例
Jun 20 Python
pyqt5 键盘监听按下enter 就登陆的实例
Jun 25 Python
django 控制页面跳转的例子
Aug 06 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
Nov 15 Python
python 实现将list转成字符串,中间用空格隔开
Dec 25 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
Feb 24 Python
Python函数基本使用原理详解
Mar 19 Python
Python并发concurrent.futures和asyncio实例
May 04 Python
Python devel安装失败问题解决方案
Jun 09 Python
利用python如何实现猫捉老鼠小游戏
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
php的ddos攻击解决方法
2015/01/08 PHP
PHP利用APC模块实现文件上传进度条的方法
2015/01/26 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
jQuery中extend函数详解
2015/02/13 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
面包屑导航详解
2017/12/07 Javascript
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
Vue实现按钮级权限方案
2019/11/21 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
pygame学习笔记(4):声音控制
2015/04/15 Python
[原创]教女朋友学Python(一)运行环境搭建
2017/11/29 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
2020/05/18 Python
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
StubHub西班牙:购买和出售全球活动门票
2017/06/05 全球购物
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
审计主管岗位职责
2014/01/31 职场文书
二年级小学生评语
2014/04/21 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
应届生求职自荐信
2014/07/04 职场文书
2014年平安建设工作总结
2014/11/19 职场文书
仓库管理制度范本
2015/08/04 职场文书
预备党员表决心的话
2015/09/22 职场文书
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技