浅谈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 专题三 字符串的基础知识
Mar 19 Python
Python学习笔记之解析json的方法分析
Apr 21 Python
Python实现读取并保存文件的类
May 11 Python
Python使用sorted排序的方法小结
Jul 28 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
May 08 Python
Python全局变量与局部变量区别及用法分析
Sep 03 Python
浅谈Python 多进程默认不能共享全局变量的问题
Jan 11 Python
python解析含有重复key的json方法
Jan 22 Python
在macOS上搭建python环境的实现方法
Aug 13 Python
浅谈python中统计计数的几种方法和Counter详解
Nov 07 Python
python打印文件的前几行或最后几行教程
Feb 13 Python
python 实现图片裁剪小工具
Feb 02 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中strtr字符串替换用法详解
2014/11/26 PHP
PHP使用xmllint命令处理xml与html的方法
2014/12/15 PHP
Codeigniter检测表单post数据的方法
2015/03/21 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
2019/03/12 PHP
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
jQuery 获取URL的GET参数值的小例子
2013/04/18 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
2014/08/12 Javascript
JavaScript每天必学之事件
2016/09/18 Javascript
Nodejs 发送Post请求功能(发短信验证码例子)
2017/02/09 NodeJs
BootStrap+Mybatis框架下实现表单提交数据重复验证
2017/03/23 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
Layui多选只有最后一个值的解决方法
2019/09/02 Javascript
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
js通过canvas生成图片缩略图
2020/10/02 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
Python实现的金山快盘的签到程序
2013/01/17 Python
python基础教程之类class定义使用方法
2014/02/20 Python
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
Python中的filter()函数的用法
2015/04/27 Python
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
TensorFlow变量管理详解
2018/03/10 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
使用css3制作登录表单的步骤
2014/04/07 HTML / CSS
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
八一建军节感言
2014/02/28 职场文书
幼儿园小班植树节活动方案
2014/03/04 职场文书
贷款担保书范文
2014/05/13 职场文书
保护环境标语
2014/06/09 职场文书
论文答谢词
2015/01/20 职场文书
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android