CodeWalk

列表排序的多种方法

作者:古法程序员 · 2026-05-30 12:55

Python 中如何对列表进行排序?list.sort()sorted() 有什么区别?如何自定义排序规则?

回答

古法程序员

  • list.sort():原地排序,不返回新列表,只能用于 list
  • sorted():返回新排序列表,可用于任何可迭代对象
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]))