Python列表复制有几种方式,有何不同?
Admin 2021-06-02 群英技术资讯 1642 次浏览
本文主要介绍Python列表复制的内容,而Python中列表的复制有直接赋值、浅复制和深复制这几种。下面我们来分别了解一下几种情况的使用和区别是什么。
a = [11, 22, 33] b = a print(id(a), id(b)) b[0]=1 print(a,b)
输出结果为如下所示,发现内存地址没有发生变化,b只是a的引用,通过b更改列表的值时,a同时做修改。

a = [11, 22, 33] b = a[:] print(id(a), id(b)) b[0]=1 print(a,b)
输出结果为如下所示,发现内存地址发生了变化,通过b更改列表的值时,对a没有任何的影响。

a = [11, 22, 33] b = copy.copy(a) print(id(a), id(b)) b[0]=1 print(a,b)
输出结果为如下所示,发现内存地址发生了变化,通过b更改列表的值时,对a没有任何的影响。说明copy()复制的方式和切片的方式功能相同。

a = [11, 22, 33] b = copy.deepcopy(a) print(id(a), id(b)) b[0]=1 print(a,b)
输出结果为如下所示,发现在该实例中,deepcopy()和copy()的方式没有任何区别。

那么浅复制和深复制有什么区别呢?继续看下面的实例测试。
a = [11, 22, 33, [1,2]] b = copy.copy(a) print(id(a), id(b)) b[3][0]=11 print(a,b)
运行结果:

a = [11, 22, 33, [1,2]] b = copy.deepcopy(a) print(id(a), id(b)) b[3][0]=11 print(a,b)
运行结果:

通过上面的测试,发现当列表a中的元素包含子列表时:
copy()方法为浅复制,没有复制子对象,当原始数据改变,子对象会改变;而deepcopy()方法包含对象里面的子对象的复制,当原始对象改变,不会造成深复制里任何子元素的改变。
以上就是关于Python列表复制的几种情况的介绍,上文有具体的代码示例,有需要的朋友可以了解一下。Python列表复制识比较基础的知识,希望大家阅读完这篇文章能有所收获。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了Python查询oracle数据库速度慢的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
python中数组array和列表list的基本用法及区别解析,一些朋友可能会遇到这方面的问题,对此在下文小编向大家来讲解一下,内容详细,易于理解,希望大家阅读完这篇能有收获哦,有需要的朋友就往下看吧!
Python中有一些特殊方法的方法名都是以双下划线开始和结束,所以又被称为双下方法。本文就来为大家详细讲讲Python中的双下方法的使用,感兴趣的可以了解一下
这篇文章主要介绍python中的被动信息搜集的三种方法,下文有具体的解释和代码,对新手理解python中的被动信息搜集具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章能有所收获,接下来小编带着大家一起了解看看。
这篇文章主要介绍了python中的json模块常用方法汇总,json模块可以实现json数据的序列化和反序列化,更多相关资料介绍需要的小伙伴可以参考一下下面文章内容
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008