sorted

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

Python内置的sorted()函数就可以对list进行排序:
>>>sorted([12,21,3,-1])

[-1,3,12,21]

此外,sorted()函数也是一个高阶函数,它可以直接接收一个key函数来实现自定义排序,例如按绝对值大小排序:

>>>sorted([12,21,3,-1,key =abs])

[-1,3,12,21]

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

我们再看一个字符串排序的例子:
>>>sorted(['bob','about','Zoo','Credit'])

['Credit','Zoo','about','bob']

默认情况下,对字符串的排序,是按照ASCII的大小比较的,由于'Z'<'a',结果'Z'会排在'a'的前面。

现在我们要实现排列忽略大小写,按字母顺序呢排列。实现该功能只需传入key

>>>sorted(['bob','about','Zoo','Credit'],key = str.lower)

['about','bob','Credit','Zoo']

要进行反向排序,可传入第三个参数:reverse =True:

>>>sorted(['bob','about','Zoo','Credit'],key = str.lower,reverse =True)

['Zoo','Credit','bob','about']


小结:

sorted()也是一个高阶函数,用sorted()排序的关键在于实现一个映射函数。