Python內置的sorted()函數(shù)可對list進行排序:
>>>sorted([36, 5, 12, 9, 21])
[5, 9, 12, 21, 36]
但sorted()也是一個高階函數(shù)殴瘦,它可以接收一個比較函數(shù)來實現(xiàn)自定義排序辆飘,比較函數(shù)的定義是,傳入兩個待比較的元素 x, y勋颖,如果 x 應該排在 y 的前面,返回 -1孙咪,如果 x 應該排在 y 的后面饥臂,返回 1。如果 x 和 y 相等次酌,返回 0。
因此舆乔,如果我們要實現(xiàn)倒序排序岳服,只需要編寫一個reversed_cmp函數(shù):
def reversed_cmp(x, y):
if x > y:
return -1
if x < y:
return 1
return 0
這樣,調用 sorted() 并傳入 reversed_cmp 就可以實現(xiàn)倒序排序:
>>> sorted([36, 5, 12, 9, 21], reversed_cmp)
[36, 21, 12, 9, 5]
sorted()也可以對字符串進行排序希俩,字符串默認按照ASCII大小來比較:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'])
['Credit', 'Zoo', 'about', 'bob']
'Zoo'排在'about'之前是因為'Z'的ASCII碼比'a'小吊宋。