在Python2中排序
>>>sorted([36, 5, 12, 9, 21])
但 sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。
比如们实现倒序
def reversed_cmp(x, y):
if x > y:
return -1
if x < y:
return 1
return 0
sorted([36, 5, 12, 9, 21],reversed_cmp)
但是在python3中因为删除了cmp,导致sorded不能直接使用了
简单排序不变
sorted([36, 5, 12, 9, 21])
带函数的排序,这里sorted增加了两个参数 key=和reverse=(可选)
比如上面例子:
from functools import cmp_to_key
print(sorted([1, 2, 5, 22, 0, 7, 9], key=cmp_to_key(reversed_cmp)))
key=cmp_to_key(function),添加比较的方法
from functools import cmp_to_key
print(sorted([1, 2, 5, 22, 0, 7, 9], key=cmp_to_key(reversed_cmp),reserve = True))
而加上reserve=,则是对前面函数的操作进行逆序,默认是False,如果函数reversed_cmp进行正序排列,reverse = True,那么就实现倒序排序,如果函数reversed_cmp进行倒序排列,reverse = True,那么就实现正序排序。如果reverse = False,那么按照函数reversed_cmp的操作进行排序