sorted()
通常规定,对于两个元素x和y
- x < y,则返回-1,
- x == y,则返回0,
- x > y,则返回1
这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。
Higher-order
Python内置的sorted()
函数就可以对list进行排序:
>>> sorted([36, 5, -12, 9, -21])
[-21, -12, 5, 9, 36]
此外,sorted()
函数也是一个高阶函数,它还可以接收一个key
函数来实现自定义的排序,例如按绝对值大小排序:
key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果
进行排序。
>>> sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]
要进行反向排序,不必改动key函数,可以传入第三个参数reverse=True
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def by_name(t):
t[0].lower()
return t
L2 = sorted(L, key=by_name)
def by_score(t):
return t[1]
L2 = sorted(L, key=by_score)