sort
l.sort()
,原地排序列表,sort 能够对很多内置类型排序。但是自定义的类没法直接排序,可以实现特定的魔法方法,让 sort 直接排序,但是真实情况下,可能需要很多种排序方式,自定义方法不能满足需求。
key
key 参数接收一个函数,函数的参数是排序列表中的一项元素,函数的返回值应该是一个可以比较的值。
1 | places = ['home', 'work', 'New York', 'Paris'] |
多属性排序
如果要把一个对象按分数和姓名两个属性排序要怎么办?可以利用元祖排序特点,让排序函数返回一个元祖。
1 | students.sort(key=lambda s: (s.score, s.name)) |
分步骤排序
比如想要按姓名倒序排序,按分数正序排序,显然无法构造合适的元祖,可以先按姓名排序再按分数排序。
sort 排序是稳定的,这就让分步骤排序可行。