# 对象列表 sort
tools.sort(key=lambda x: x.name)
# 对象列表,多元素 sort
power_too1s.sort(key=lambda x:(x.weight, x.name))
# 对象列表,多元素,不同顺序 sort
power_tools.sort(key=lambda x: (-x.weight,x.name))
# 对象列表,多元素,不同顺序 sort (最佳) —— 依次排序,将最重要的放在最后排序
power_tools.sort(key=lambda x:x.name) #Name ascending
power_tools.sort(key=lambda x: x.weight, reverse=True) # Weight descending
import functools
@functools.total_ordering
class Book:
def __init__(self, title, due_date):
self.title = title
self.due_date = due_date
def __lt__(self, other):
return self.due_date < other.due_date
# 让一个对象可以直接排序sort & sorted
- sort 原地排序,所以如果传入的对象不支持原地修改,那么会出错。例如传入一个元组进去。
- sorted 返回一个有序列表。
- 无论哪个函数,使用 key 参数比传入 cmp 函数效率要高,毕竟如果使用 cmp 函数,那么函数要调用很多次,函数开销大。