一、sorted()函数概述
sorted()
是Python内置的高阶函数,用于对可迭代对象进行排序操作。与列表的sort()
方法不同,sorted()
会返回一个新的已排序列表,而不改变原数据。
基本语法
sorted(iterable, *, key=None, reverse=False)
二、核心参数详解
1. iterable(必需参数)
任何可迭代对象(列表、元组、字符串、字典等)
2. key(关键参数)
- 接受一个函数作为参数
- 该函数会被应用到每个元素上,根据函数返回值进行排序
- 默认值为
None
,表示直接比较元素本身
3. reverse(排序方向)
- 布尔值参数
False
表示升序(默认)True
表示降序
三、底层实现原理
sorted()
内部使用TimSort算法(一种混合了归并排序和插入排序的稳定算法):
- 时间复杂度:O(n log n)
- 空间复杂度:O(n)
- 稳定性:保持相等元素的原始顺序
# 伪代码展示基本逻辑
def sorted(iterable, key=None, reverse=False):
# 1. 获取可迭代对象的元素列表
elements = list(iterable)
# 2. 如果有key函数,应用转换
if key is not None:
decorated = [(key(x), i, x) for i, x in enumerate(elements)]
else:
decorated = elements
# 3. 执行TimSort排序
decorated.sort()
# 4. 还原原始数据(保持稳定性)
if key is not None:
result = [x for (k, i, x) in decorated]
e