oeasy Python 113 内置函数sorted中使用 reverse和key

  • 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。

oeasy Python 113 内置函数sorted中使用 reverse和key

回忆
  • list类 有专门的
  • 反转方法
  • reverse
  • list中的 sort方法
  • 也有 reverse 参数
  • list类的sort方法
  • 总共3个参数
  1. self 是自己
  2. key
  3. reverse
  • 后两个参数 哪个放前面都行吗?
回忆
复制代码
cl = list("oeasy")
cl.sort(key=ord, reverse=True)
cl.sort(reverse=True, key=ord)
  • 谁在前面都可以
  • 这次在等号两边 没有空格
  • 这符合pep-8的规范吗?
pep8
  • 函数多个参数传递的时候
  • 等号两边 不要空格

    for num in range(128):
    print(num, chr(num), sep=":")

  • 再查看帮助

帮助文件
复制代码
help(list.sort)
  • 这个sort函数的帮助手册里
  • 等号两边 也没有空格
  • 都是等号 为啥规则不一样呢?
提问ai
  • 为啥 帮助手册里面
  • key 排前面?🤔
重要性
  • First things first
  1. key 是 比较的核心
  • 更重要
  1. reverse 是 次序
  • 没那么重要
  • 使用不同的排序方式 (key)
  • 列表 会有不同的结果
  • 每次都在​原位上​修改
  • in-place
  • 能否 不在原位上 排序?🤔
询问
  • 推荐使用sorted函数
类型
复制代码
help(__builtins__)
  • builtins 中有 一些函数
  • print
  • ord
  • chr
  • sorted
  • sorted 是
  • 内建函数
求助
  • 喊救命

    help(sorted)

  • 函数 返回 新列表

  • 原列表 不变
  • 三个参数
  • 按重要性排序

|----------|-------|
| 参数/概念 | 说明 |
| iterable | 可迭代对象 |
| key | 排序方法 |
| reversed | 是否反转 |

  • 为啥这个次序?
First things first
  1. iterable 是 排序的目标
  • 给谁排序啊
  • 对应 list.sort里面的 self
  1. key 是 比较的算法
  • 用啥比较
  1. reverse 是 次序
  • 结果队列是否 反转
  • sorted函数 的 参数列表
  • 和 list.sort 基本一样
  • list类的sort方法如何理解?
类和对象
  • 类 class
  • 是 抽象的 数据类型
  • list 就是 列表类
  • 列表类 这些 方法
  • 对象 object
  • 是 类的 实例对象

  • instance object

    help(list.sort)

  • 所以 list.sort 中的 self

  • 就是对象自己
  • 他知道 给谁排序
  • 刚才的sorted函数
  • 他不知道 给谁排序
  • 需要传个 可遍历的对象进去
  • sorted 和 list.sort
  • 参数一致
  • 次序也一致
  • 重要的放前面
实验
  • 使用len进行排序
  • 返回 新结果 列表new

    sl = ["12", "3"]
    new = sorted(sl, key=len)
    print(sl)
    print(new)

  • sorted方法

  • 不会影响sl
  • sorted函数可以使用reverse吗?
reversed
复制代码
sl = ["12", "3"]
new = sorted(sl, key=len, reverse=True)
print(sl)
print(new)
  • 可以使用reverse参数
  • sorted 函数
  • 时间复杂度是多少?
再问
  • sort时间复杂度
  • 和 list.sort 一样
  • ​也​是 n*log(n)
  • 怎么理解?
提问
  • timsort是什么呢?
timsort
  • 一种排序算法
  • Tim Peters发明的
回忆
  • 写 python之禅 的 Tim
  • Tim Peters
  • zen of python 作者
python之禅
复制代码
import this
  • 禅宗
  • 通过直觉、冥想
  • 达到 顿悟
  • 以心传心
  • 不设文字
  • 直指人心
禅意
  • 追求超越语言概念的真理
  • 对生命本质的体悟
zen
排序总结
  • 2 sort

|------|-----------|---------|
| 对比维度 | list.sort | sorted |
| 返回值 | None | 新列表 |
| 对原列表 | 原地修改 | 不改变原始对象 |
| 核心特点 | 节省内存 | 保留原数据 |

  • 2 参数

|---------|-----|-------|---------|
| 参数名 | 类型 | 默认值 | 作用说明 |
| key | 函数 | None | 排序依据的函数 |
| reverse | 布尔值 | False | 控制方向 |

  • 函数、方法、参数
  • 有啥区别?
总结

|--------|------------|---------------|-------------------------------------------------|
| 类别 | 核心定义 | 关键特征 | 简单示例 |
| 方法 | 依附于类/对象 | 谁调用就改谁 | sl.reverse() sl.sort() |
| 函数 | 实现特定功能 | 调用时 把列表当参数传进去 | sorted(sl) |
| 参数 | 函数/方法 输入变量 | 根据参数 实现功能 | sorted(reverse = True) sl.sort(revserse = True) |

  • 排好序的列表
  • 就是 ​有序列表​
  • 再向 ​有序列表​ 新插 列表项
  • 就得 讲究 位置
  • 插入后
  • 有序列表
  • 还得 ​依然​有序
  • ​咋​插入 呢?🤔
  • 下次再说 👋
  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。
相关推荐
helloweilei1 天前
python 抽象基类
python
用户8356290780511 天前
Python 实现 PPT 转 HTML
后端·python
zone77392 天前
004:RAG 入门-LangChain读取PDF
后端·python·面试
zone77392 天前
005:RAG 入门-LangChain读取表格数据
后端·python·agent
树獭非懒2 天前
AI大模型小白手册|Embedding 与向量数据库
后端·python·llm
唐叔在学习2 天前
就算没有服务器,我照样能够同步数据
后端·python·程序员
曲幽3 天前
FastAPI流式输出实战与避坑指南:让AI像人一样“边想边说”
python·ai·fastapi·web·stream·chat·async·generator·ollama
Flittly3 天前
【从零手写 AI Agent:learn-claude-code 项目实战笔记】(1)The Agent Loop (智能体循环)
python·agent
vivo互联网技术3 天前
ICLR2026 | 视频虚化新突破!Any-to-Bokeh 一键生成电影感连贯效果
人工智能·python·深度学习