Python高阶函数:sorted

本文介绍了Python内置的排序函数sorted()的使用方法,包括如何利用key参数来自定义排序规则,例如按绝对值大小排序或忽略大小写进行字母排序,以及如何进行反向排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

排序算法

排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。

Python内置的sorted()函数就可以对list进行排序:

>>> sorted([23, 45, 1, -19, -22, 88])
[-22, -19, 1, 23, 45, 88]

另外,sorted函数还可以接收一个key函数来实现自定义排序,例如按绝对值大小排序:

>>> sorted([11, 22, -33, 1, 2, 5, 3], key=abs)
[1, 2, 3, 5, 11, 22, -33]

原理是,key指定的函数将作用于list的每一个元素上,并根据函数返回的结果进行排序。


再来看一下字符串排序:

>>> sorted(['dabiaoge', 'Zyt', 'aaaa', 'WangGebi'])
['WangGebi', 'Zyt', 'aaaa', 'dabiaoge']

默认情况下,字符串排序是根据ASCII码的大小来比较的,由于大写字母的ASCII码比小写字母小,所以结果会如上所示。

那么,如果要忽略大小写,按照字母排序怎么办呢?

实际上,我们只需要在key函数把字符都变成大写或小写,再来比较即可。如下:

>>> sorted(['dabiaoge', 'Zyt', 'aaaa', 'WangGebi'], key=str.lower)
['aaaa', 'dabiaoge', 'WangGebi', 'Zyt']

如果要反向排序,只需要再加一个参数即可:

>>> sorted(['dabiaoge', 'Zyt', 'aaaa', 'WangGebi'], key=str.lower, reverse=True)
['Zyt', 'WangGebi', 'dabiaoge', 'aaaa']

小结:从上述例子看,高阶函数的抽象能力是非常强大的,而且核心代码可以保持的非常简洁。sorted()也是一个高阶函数,用sorted()排序的关键在于实现一个映射函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值