Python 内建函数列表 > Python 的内置函数 sorted

Python 的内置函数 sorted() 是一个用于排序的可迭代对象的高阶函数,它接受一个可迭代对象作为输入,并返回一个新的已排序的列表。与列表的 sort() 方法不同,sorted() 不会修改原始的可迭代对象,而是生成一个新的排序后的列表。

基本用法

sorted(iterable, key=None, reverse=False)
  • iterable:需要排序的可迭代对象(如列表、元组、字符串等)
  • key(可选):指定一个函数作为排序的关键字,默认为 None
  • reverse(可选):布尔值,指定是否降序排序,默认为 False(升序)

示例说明

1. 基本排序

numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出:[1, 2, 5, 5, 6, 9]

2. 降序排序

numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)  # 输出:[9, 6, 5, 5, 2, 1]

3. 使用 key 参数

key 参数允许你指定一个函数,用于从每个元素中提取比较键。例如,对字符串列表按长度排序:

words = ["apple", "banana", "cherry", "date"]
sorted_words = sorted(words, key=len)
print(sorted_words)  # 输出:['date', 'apple', 'banana', 'cherry']

4. 复杂对象排序

假设有一个学生列表,每个学生是一个字典:

students = [
    {"name": "Alice", "age": 20},
    {"name": "Bob", "age": 18},
    {"name": "Charlie", "age": 22}
]
# 按年龄排序
sorted_students = sorted(students, key=lambda x: x["age"])
print(sorted_students)
# 输出:[{'name': 'Bob', 'age': 18}, {'name': 'Alice', 'age': 20}, {'name': 'Charlie', 'age': 22}]

应用场景

  1. 数据预处理:在数据分析或机器学习中,经常需要对数据进行排序。
  2. 展示排序结果:在网页或应用中展示排序后的列表。
  3. 算法实现:某些算法(如合并排序)可能需要使用 sorted() 作为辅助函数。

注意事项

  • 对于大型数据集,sorted() 可能会消耗较多内存,因为它需要创建一个新的列表。
  • 如果需要对列表进行原地排序,可以使用 list.sort() 方法,它不会创建新的列表。

通过灵活使用 keyreverse 参数,sorted() 函数能够满足各种复杂的排序需求。