列表高级排序

方法 sort 用于对列表就地排序。就地排序意味着对原来的列表进行修改,使其元素按顺序排列,而不是返回排序后的列表的副本。

>>> x = [4, 6, 2, 1, 7, 9]
>>> x.sort()
>>> x
[1, 2, 4, 6, 7, 9]

方法 sort 接受两个可选参数:key 和 reverse。这两个参数通常是按名称指定的,称为关键字参数。
对于关键字参数 reverse,只需将其指定为一个真值(True 或 False),以指出是否要按相反的顺序对列表进行排序。

>>> x = [4, 6, 2, 1, 7, 9]
>>> x.sort(reverse=True)
>>> x
[9, 7, 6, 4, 2, 1]

对于另一个关键字参数 key,可以将其设置为一个用于排序的函数。然而,不会直接使用这个函数来判断一个元素是否比另一个元素小,而是使用它来为每个元素创建一个键,再根据这些键对元素进行排序。例如,要根据长度对元素进行排序,可将参数 key 设置为函数 len。

>>> x = ['aardvark', 'abalone', 'acme', 'add', 'aerate']
>>> x.sort(key=len)
>>> x
['add', 'acme', 'aerate', 'abalone', 'aardvark']

很多情况下,将参数 key 设置为一个自定义函数很有用,例如 【算法题】完全平方数相关 中的解法二