python 中的 sorted 函数是内置全局排序函数,它不会修改原来的可迭代对象,而是生成一份全新的排好序的列表,这是它和列表自带 sort 方法最核心的区别,支持数字 字符串 元组 字典等多种可迭代对象,还可以通过 key 参数自定义排序规则,通过 reverse 参数控制升序或者降序。很多新手容易混淆 sorted 和 sort,以为两者效果完全一样,sort 是列表原地排序,修改原列表并且返回 None,sorted 独立于列表方法,适用范围更广,做数据处理的时候,比如爬虫采集完的数据排序,学生成绩排序,商品价格排序,都会频繁用到 python 中的 sorted 函数,理解它的参数原理,掌握自定义 key 排序,是深入使用这个函数的重点。
一 基础语法
语法格式
sorted (可迭代对象,key=None, reverse=False)
参数说明
可迭代对象 必填,需要排序的数据,比如列表 元组 字符串
key 可选,自定义排序规则,传入函数,根据函数返回值进行排序
reverse 可选,默认 False 代表升序,设置 True 就是降序
基础示例
nums = [5,2,9,1]
new_nums = sorted (nums)
print (new_nums)
输出结果 [1,2,5,9]
原 nums 列表保持不变
二 核心特性表格
| 特性 | 详细说明 |
|---|---|
| 函数类型 | python 内置全局函数,不属于列表专属 |
| 原数据 | 不会改动原始可迭代对象 |
| 返回结果 | 返回排好序的新列表 |
| 支持类型 | 列表 元组 字符串 集合等可迭代对象 |
| 排序方式 | 默认升序,reverse=True 切换降序 |
| 自定义排序 | 通过 key 参数实现自定义排序逻辑 |
三 sorted 和列表 sort 方法对比
| 对比项 | python 中的 sorted 函数 | 列表 sort 方法 |
|---|---|---|
| 调用方式 | 全局函数 sorted (列表) | 列表对象方法 列表.sort () |
| 原数据 | 保留原数据,生成新列表 | 原地修改原列表 |
| 返回值 | 返回新排序列表 | 返回 None |
| 适用范围 | 所有可迭代对象 | 只能列表使用 |
四 key 自定义排序深度讲解
key 是 python 中的 sorted 函数最重要的进阶参数,它会把每一个元素传入 key 对应的函数,用函数返回的值作为排序依据,原始元素本身不会改变。
示例 对元组列表,按照第二个元素排序
data = [("苹果",12),("香蕉",5),("橙子",20)]
res = sorted (data, key=lambda x:x [1])
这个代码就是按照元组第二个数字从小到大排序
还可以结合 len 函数,按照字符串长度排序
words = ["hi","python","ok"]
res = sorted (words, key=len)
五 常见实战场景
1 数字列表升序降序排序
2 字符串列表按字典序排序
3 字典列表,按照某一个键的值排序,比如按照分数 价格排序
4 多条件排序,key 返回元组,实现先按第一个条件,再按第二个条件排序
六 常见踩坑点
误区一 以为 sorted 会修改原列表,执行之后还去读取原数据,发现原数据没有变化
误区二 混淆 sorted 和 sort,把 sort 的原地修改特性套用到 sorted 上
误区三 key 参数理解错误,以为 key 会修改原始元素,实际只是生成排序参考值
误区四 排序元素类型不一致,比如同时混有字符串和数字,排序的时候触发类型报错
整体总结,python 中的 sorted 函数核心优势就是不改动原数据,返回新排序列表,支持 reverse 切换升降序,key 实现自定义排序,适用多种可迭代对象,和原地排序的 sort 方法区分清楚,就可以在各类数据排序任务里面正确使用。
【常见问题】
问题 1 python 中的 sorted 函数 会修改原来的列表吗
回答 1 python 中的 sorted 函数不会修改原来的列表,它会生成一份全新排好序的列表,原始数据保持不变。
问题 2 python 中的 sorted 函数 reverse 参数作用是什么
回答 2 python 中的 sorted 函数 reverse 参数默认 False 升序,设置为 True 之后就会按照降序进行排序。
问题 3 python 中的 sorted 函数 和列表 sort 有什么区别
回答 3 python 中的 sorted 函数是全局函数,返回新列表,支持多种可迭代对象,sort 是列表原地排序方法,返回 None,只能列表使用。
问题 4 python 中的 sorted 函数 key 参数是做什么的
回答 4 python 中的 sorted 函数 key 参数用来设置自定义排序规则,根据函数返回值作为排序依据,原始元素本身不会被修改。
【免责申明】
本文内容为 python 中的 sorted 函数语法教学,仅用于学习参考,详细参数定义可查阅 Python 官方文档。


