Python列表复制有几种方式,有何不同?
Admin 2021-06-02 群英技术资讯 1212 次浏览
本文主要介绍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语言编写一个爆炸信息窗口脚本,文中的示例代码讲解详细,感兴趣的小伙伴可以尝试一下
这篇文章主要介绍了python爬虫scrapy框架用法的用法,对于新手学习scrapy框架有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章能有所收获,接下来小编带着大家一起了解看看。
这篇文章主要为大家介绍了pytest官方文档解读fixtures的调用方式,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
相信很多人都很想把python文件封装成exe文件,下面这篇文章主要给大家介绍了关于python封装成exe的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
python推导式是什么意思?推导式comprehensions(又称解析式),是Python的一种独有特性。而python的推导有三种,分别是列表推导式、字典推导式和集合推导式,下面我们来具体的了解看看。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
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备09006778号 域名注册商资质 粤 D3.1-20240008