详解Python列表的常用操作及应用是怎样的
Admin 2022-11-22 群英技术资讯 1652 次浏览
这篇文章给大家分享的是“详解Python列表的常用操作及应用是怎样的”,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下吧。这里需要说明一下 sort & sorted 的区别: sort 是对原列表进行排列,即原列表会改变; sorted 是返回一个排列后的列表作为返回值,即原列表不会改变,会返回一个排序后的新列表;
heros = ['后羿', '库里', '路易吉','库里', '马里奥'] heros.sort() print(heros) # 输出:['后羿', '库里', '库里', '路易吉', '马里奥'] heros.sort(reverse=True) # 返序排列 print(heros) # 输出:['马里奥', '路易吉', '库里', '库里', '后羿'] a = sorted(heros) # 不会影响原列表,会返回一个排序后的新列表; print(a) # 输出:['后羿', '库里', '库里', '路易吉', '马里奥'] print(heros) # 输出:['马里奥', '路易吉', '库里', '库里', '后羿'] heros.reverse() # 翻转列表,与 heros.sort(reverse=True) 一样可以用这种方法,循环列表中的所有元素;
heros = ['后羿', '库里', '路易吉','库里', '马里奥'] for hero in heros: print(hero) # 输出:后羿 库里 路易吉 库里 马里奥使用这种方法循环,可以同时获得元素的index(位置信息),举例如下:
heros = ['后羿', '库里', '路易吉','库里', '马里奥'] for id,hero in enumerate(heros): print(id ,'--',hero) # 输出如下: # 0 -- 后羿 # 1 -- 库里 # 2 -- 路易吉 # 3 -- 库里 # 4 -- 马里奥首先看以下代码:
heros = ['后羿', '库里', '路易吉','库里', '马里奥'] copyheros = heros print(copyheros) # 输出:['后羿', '库里', '路易吉', '库里', '马里奥'] heros[1] = '宙斯大魔王' print(heros) # 输出:['后羿', '宙斯大魔王', '路易吉', '库里', '马里奥'] print(copyheros) # 输出:['后羿', '宙斯大魔王', '路易吉', '库里', '马里奥']我们会有一个问题:为什么copyheros 的值会变?!?! 这似乎与我们的想法不一样。原因如下: 这里:copyheros = heros ,其实并没有复制,只是将 copyheros 指向了 heros,两个变量其实是共享一个内存地址的,所以当其中任何一个方法变化,另一个也会发生变化;图解如下:
所以,这里并没有任何的复制发生!
如果以上的方法无法复制,那么我们需要怎样才能复制列表呢? 答案是:我们需要使用copy() 方法;
heros = ['后羿', '库里', '路易吉','库里', '马里奥'] copyheros = heros.copy() print(copyheros) # 输出:['后羿', '库里', '路易吉', '库里', '马里奥'] heros[1] = '宙斯大魔王' print(heros) # 输出:['后羿', '宙斯大魔王', '路易吉', '库里', '马里奥'] print(copyheros) # 输出:['后羿', '库里', '路易吉', '库里', '马里奥']从上面的例子,我们可以看到,更改heros 的元素后, copyheros 未发生变化;这里的copyheros 就是浅复制; 为什么这样的复制还叫浅复制呢?请继续看~
前面讲了浅复制,所谓浅复制,通俗的说:就是只能复制列表中的第一层; 总所周知,列表是可以嵌套的,例如: ['后羿', '库里', '路易吉', [ '猎人', '法师', '牧师' ] , '马里奥'],这里的列表中,出现了另一个列表[ '猎人', '法师', '牧师'], 当出现这种情况时,浅复制无法复制列表中的列表,参考下面的例一;因为:列表中的列表依然只共享一个内存空间; 想要一个完整的复制,需要使用copy模块中的 deepcopy(), 举例如例二:
例一: 浅复制的例子:
heros = ['后羿', '库里', '路易吉',[ '猎人', '法师', '牧师' ], '马里奥'] copyheros = heros.copy() print(copyheros) # 输出:['后羿', '库里', '路易吉',[ '猎人', '法师', '牧师' ], '马里奥'] heros[3][1] = '变身!!!' print(heros) # 输出:['后羿', '库里', '路易吉', ['猎人', '变身!!!', '牧师'], '马里奥'] print(copyheros) # 输出:['后羿', '库里', '路易吉', ['猎人', '变身!!!', '牧师'], '马里奥']例二:深复制的例子:
import copy heros = ['后羿', '库里', '路易吉',[ '猎人', '法师', '牧师' ], '马里奥'] copyheros = copy.deepcopy(heros) print(copyheros) # 输出:['后羿', '库里', '路易吉', ['猎人', '法师', '牧师'], '马里奥'] heros[3][1] = '变身!!!' print(heros) # 输出:['后羿', '库里', '路易吉', ['猎人', '变身!!!', '牧师'], '马里奥'] print(copyheros) # 输出:['后羿', '库里', '路易吉', ['猎人', '法师', '牧师'], '马里奥']这里我们可以得到以下结论:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
在模版中,有时候需要对一些数据进行处理以后才能使用。一般在Python中我们是通过函数的形式来完成的。而在模版中,则是通过过滤器来实现的。过滤器使用的是|来使用。
本文实例为大家分享了OpenCV实现相机校正的具体代码,供大家参考,具体内容如下
这篇文章主要介绍了python的自变量选择(所有子集回归,后退法,逐步回归),文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
这篇文章主要介绍了浅谈Python模块导入规范,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
我们在Django项目中可能会使用到render()函数,但是很多新手可能不知道render()函数的使用,对此,下面小编就给大家分享一个render()函数的用法,感兴趣的朋友可以看看。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
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