浅谈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输出各行命令详解
Feb 01 Python
Python selenium实现微博自动登录的示例代码
May 16 Python
Python延时操作实现方法示例
Aug 14 Python
Python中垃圾回收和del语句详解
Nov 15 Python
Python 从相对路径下import的方法
Dec 04 Python
详解Python函数式编程—高阶函数
Mar 29 Python
Python使用pyautocad+openpyxl处理cad文件示例
Jul 11 Python
Python制作微信好友背景墙教程(附完整代码)
Jul 17 Python
Python 根据日志级别打印不同颜色的日志的方法示例
Aug 08 Python
使用Django搭建网站实现商品分页功能
May 22 Python
Python实现定时监测网站运行状态的示例代码
Sep 30 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
Dec 17 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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
PHP array操作10个小技巧分享
2011/06/23 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
2013/07/01 PHP
PHP对象、模式与实践之高级特性分析
2016/12/08 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
js弹出模式对话框,并接收回传值的方法
2013/03/12 Javascript
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
javascript date格式化示例
2013/09/25 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
javascript基于定时器实现进度条功能实例
2017/10/13 Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
2018/08/09 Javascript
小程序实现选择题选择效果
2018/11/04 Javascript
express启用https使用小记
2019/05/21 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
2019/06/09 Javascript
[00:32]2018DOTA2亚洲邀请赛Secret出场
2018/04/03 DOTA
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python 变量类型及命名规则介绍
2013/06/08 Python
Python新手入门最容易犯的错误总结
2017/04/24 Python
Python3数字求和的实例
2019/02/19 Python
python取余运算符知识点详解
2019/06/27 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
Python内置类型性能分析过程实例
2020/01/29 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
LN-CC日本:高端男装和女装的奢侈时尚目的地
2019/09/01 全球购物
社会学专业学生职业规划书
2014/02/07 职场文书
学生会个人总结范文
2015/02/15 职场文书
浅谈JS的原型和原型链
2021/06/04 Javascript
Python各协议下socket黏包问题原理
2022/04/12 Python