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 即可。
相关推荐
困死,根本不会1 小时前
Kivy+Buildozer 打包 APK 踩坑:python-for-android 克隆失败
开发语言·php·kivy
咸鱼2.03 小时前
【java入门到放弃】跨域
java·开发语言
sg_knight3 小时前
设计模式实战:模板方法模式(Template Method)
python·设计模式·模板方法模式
FreakStudio3 小时前
ESP32居然能当 DNS 服务器用?内含NCSI欺骗和DNS劫持实现
python·单片机·嵌入式·面向对象·并行计算·电子diy
skiy4 小时前
java与mysql连接 使用mysql-connector-java连接msql
java·开发语言·mysql
一念春风4 小时前
智能文字识别工具(AI)
开发语言·c#·wpf
乐观勇敢坚强的老彭4 小时前
2026全国青少年信息素养大赛考纲
python·数学建模
桦04 小时前
【C++复习】:继承
开发语言·c++
YMWM_5 小时前
【问题】thor上的cubLas
linux·python·thor