# 对象列表 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 函数,那么函数要调用很多次,函数开销大。