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()排序的关键在于实现一个映射函数。
转载于:https://blog.51cto.com/9130745/1734618