列表排序的多种方法
Python 中如何对列表进行排序?list.sort() 和 sorted() 有什么区别?如何自定义排序规则?
回答
古法程序员
list.sort():原地排序,不返回新列表,只能用于 listsorted():返回新排序列表,可用于任何可迭代对象
lst = [3, 1, 4, 1, 5]
lst.sort()
print(lst) # [1, 1, 3, 4, 5]
sorted_lst = sorted([3, 1, 4, 1, 5], reverse=True)
# [5, 4, 3, 2, 1]
自定义排序:
# key 参数
students = [('Alice', 22), ('Bob', 19), ('Charlie', 21)]
sorted(students, key=lambda s: s[1]) # 按年龄排序
# 使用 attrgetter
from operator import itemgetter, attrgetter
sorted(students, key=itemgetter(1))
# 多级排序
sorted(students, key=lambda s: (s[1], s[0]))