浅谈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 实现简单的shell sed替换功能(实例讲解)
Sep 29 Python
python生成excel的实例代码
Nov 08 Python
Python字典,函数,全局变量代码解析
Dec 18 Python
Python之pandas读写文件乱码的解决方法
Apr 20 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
Aug 02 Python
python实现字符串加密成纯数字
Mar 19 Python
Flask模板引擎之Jinja2语法介绍
Jun 26 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 Python
Django 框架模型操作入门教程
Nov 05 Python
Python for循环与getitem的关系详解
Jan 02 Python
python opencv 检测移动物体并截图保存实例
Mar 10 Python
python 用opencv实现霍夫线变换
Nov 27 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
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
php中static静态变量的使用方法详解
2010/06/04 PHP
测试php连接mysql是否成功的代码分享
2014/01/24 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
2020/07/10 PHP
ext form 表单提交数据的方法小结
2008/08/08 Javascript
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
javascript中的循环语句for语句深入理解
2014/04/04 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
微信小程序实现轨迹回放的示例代码
2019/12/13 Javascript
基于javascript canvas实现五子棋游戏
2020/07/08 Javascript
Python函数学习笔记
2008/10/07 Python
python编写网页爬虫脚本并实现APScheduler调度
2014/07/28 Python
Python中subprocess的简单使用示例
2015/07/28 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
Numpy数组的广播机制的实现
2020/11/03 Python
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
给幼儿园老师的表扬信
2014/01/19 职场文书
开学季活动策划方案
2014/02/28 职场文书
学习交流会主持词
2014/04/01 职场文书
公共艺术专业自荐信
2014/09/01 职场文书
社区四风存在问题及整改措施
2014/10/26 职场文书
2015年招聘工作总结
2014/12/12 职场文书
Python利器openpyxl之操作excel表格
2021/04/17 Python
js实现模拟购物商城案例
2021/05/18 Javascript
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android
ICOM R71E和R72E图文对比解说
2022/04/07 无线电
代码复现python目标检测yolo3详解预测
2022/05/06 Python
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技