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 即可。
相关推荐
芝士爱知识a1 小时前
[2026深度测评] AI期权交易平台推荐榜单:AlphaGBM领跑,量化交易的新范式
开发语言·数据结构·人工智能·python·alphagbm·ai期权工具
AC赳赳老秦1 小时前
2026主权AI趋势:DeepSeek搭建企业自有可控AI环境,保障数据安全实战
大数据·数据库·人工智能·python·科技·rabbitmq·deepseek
黎潇lulu1 小时前
Java运算符基础知识
java·开发语言
小小张说故事1 小时前
OpenCV Python技术文档
python·opencv
HAPPY酷1 小时前
C++中类常见的函数分类
java·开发语言·c++
PD我是你的真爱粉2 小时前
Redis持久化、内存管理、慢查询与发布订阅
redis·python·mybatis
weixin_449173652 小时前
java使用poi保存表格和图片到word文件中
java·开发语言·word
查无此人byebye2 小时前
实战DDPM扩散模型:MNIST手写数字生成+FID分数计算(完整可运行版)
人工智能·pytorch·python·深度学习·音视频
好家伙VCC2 小时前
# 光计算驱动的编程范式革新:用Python实现光子神经网络模拟器在传统电子计算架构逼近物理极限的今天,**光计算**正
java·开发语言·python·神经网络