Python列表的排序指南
1|0Python中常用的排序方法
sorted()
sorted()函数是Python中的内置函数,它可以从一个可迭代对象构建出一个新的列表。
结果如下
可以看出,用sorted()函数排序后原列表元素顺序不变,而新的列表则按升序排序。
如果只是做简单的列表升序排序,可以直接使用sorted()方法来实现。
list.sort()
list.sort()是Python列表的一个内置方法,它跟sorted()方法不同的是,它会直接修改原列表。
结果如下
原列表中元素的顺序发生了改变。
reversed()
reversed()函数返回一个反转的迭代器
结果如下
reversed()函数用在列表中会返回一个迭代器对象,可以使用list()方法将迭代器转换为列表
list.reverse()
list.reverse()也是Python列表的一个方法,用于反向列表的元素,和reversed()函数差不多
结果如下
类型list.sort(),它也会直接改变原列表的元素顺序
random.shuffle()
在random库中有一个shuffle()方法可以将列表的所有元素进行随机排序
结果如下
原列表的元素顺序被随机打乱
2|0深入探讨sorted()函数
上面介绍了Python中常用的排序方法,其中sorted()方法还有很多比较实用的地方。
重要参数说明
其中:
- iterable -- 可迭代对象
- key -- 关键函数
- reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
对可迭代对象进行排序
list.sort()方法只是为列表定义的,而sorted()方法可以接受任何可迭代对象。
我们尝试对一个字典进行sorted()排序
结果如下
得到的结果是一个列表(其实就是dict.keys()列表,字典中的键列表)
实际上,sorted()函数是不能对字典进行排序的,因为在Python中字典是无序的。
如果实在想得到一个有序字典,你可以使用collections模块中OrderedDict()来生成一个有序字典。
关键函数
sorted()中的形参key是用于指定排序前对列表中的每个元素进行调用的函数。
结果如下
上面的key=str.lower是先对列表中的每一个变成小写字母的单词进行比较,再对原列表进行升序排序。
key形参的值是一个函数,它接收一个参数并返回一个用于排序的键
结果如下
以上例子的key值是一个last函数,用于获取元组中最后一个元素,而a列表中的元素是格式相同的元组,
因此通过last函数可以获取列表中的每一个元组最后一个元素,也就是90, 88, 95这三个值来比较,升序排序后就得到最后的结果。
同样,我们的key值也可以使用lambda表达式形式,简化以上过程如下
结果跟上面的一样
上面只是对形参key的使用进行了简单的演示,你也可以用在其他方面,如一些具有命名属性的对象。
还可以使用Operator模块函数来使访问器功能更容易、更便捷,这里就不过多演示了,有兴趣可以自行搜索相关资料。
升序和降序
最后就是reverse参数,用于决定列表升序还是降序排序。
结果如下
设置reverse=True就可以对列表进行降序排序。
__EOF__

本文链接:https://www.cnblogs.com/blueberry-mint/p/13408607.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报