代码点读机 / Python / sorted

sorted Python · 内置函数

`sorted` 返回一个排序后的新列表,原列表不变。就像给许多张在桌上随便排列的扑克牌拍了照,然后在照片上给这堆牌重新排序。至于桌上原本那摊牌,其实从头到尾都没有动过。

怎么用

sorted(可迭代对象)
sorted(可迭代对象, reverse=True)   # 降序
sorted(可迭代对象, key=函数)       # 自定义排序规则

小例子

数字 = [3, 1, 4, 1, 5]
排序后 = sorted(数字)
print(排序后)
print(数字)   # 原列表不变

运行结果

[1, 1, 3, 4, 5]
[3, 1, 4, 1, 5]

对比:列表自带的 sort 方法会修改原列表

数字 = [3, 1, 4, 1, 5]
数字.sort()
print(数字)   # 原列表被修改
`sorted` 不会修改原列表,更适合需要保留原数据的场景。

常见使用场景

1. 对数字、字符串排序:
单词 = ["banana", "apple", "cherry"]
print(sorted(单词))   # ['apple', 'banana', 'cherry']
2. 按自定义规则排序:
学生 = [("小明", 18), ("小红", 16), ("小刚", 20)]
按年龄排序 = sorted(学生, key=lambda x: x[1])
print(按年龄排序)
3. 降序排序:
数字 = [3, 1, 4]
print(sorted(数字, reverse=True))   # [4, 3, 1]

提醒:- `sorted` 返回新列表,不会改变原可迭代对象。 - `key` 参数可以指定一个函数,用于提取比较的关键字。 - `reverse=True` 表示降序。 - 如果可迭代对象中有不可比较的类型,会报错。

官方文档:https://docs.python.org/zh-cn/3/library/functions.html#sorted

在代码里遇到不认识的词?打开代码点读机,点一下就懂 → ← Python全部词条