Error in user YAML: (<unknown>): found a tab character that violate indentation while scanning a plain scalar at line 3 column 3
---
- oeasy Python 0111
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
- 本教程同步发布在:
- 个人网站: `https://oeasy.org`
- 蓝桥云课: `https://www.lanqiao.cn/courses/3584`
- GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
- Gitee: `https://gitee.com/overmind1980/oeasypython`
---- 配套视频
- 上次我们了解
- 最大值/最小值 函数
- max/min
- 可以直接给列表 排序 吗?
- 好像还真有
help(list.sort)
- 动手试试
nl = [0, 3, 2, 1, 4]
nl.sort()
print(nl)
- 列表对象 调用 sort方法
- 列表项 从此 按升序排列
- 如果 想
降序呢?
- 寻找方法
list.
- list类 有个 reverse方法
- 啥意思?
- reverse 来自于 vert
- turn 和 vert 是同源的
help(list.reverse)
- 参数列表
- 第一个 是 self
- 默认的
原地把列表反转
nl
nl.reverse()
nl- reverse方法 让 列表
- 首尾翻转
- reverse方法
- 对字符列表用吗?
cl = list("oeasy")
print(cl)
cl.sort()
print(cl)
cl.reverse()
print(cl)- 字符列表可以反转
- 此时的列表项 是 字符
- 如果 列表项 是 字符串呢?
- 还能
排序么?
- 还能
sl = ["oeasy", "o2zz", "o3z"]
print(sl)
sl.sort()
print(sl)- 可以排序
- 字符串咋排序呢?
- 排序的前提是 能够比大小
"o2zz" < "o3z"
"o3z" < "oeasy"
- 字符串可以比大小
- 具体怎么比的呢?
- 先看第一个
- 都是'o'
- 继续
- 再看第二个
- 比较 ascii 的值
- '2' < '3' < 'e'
- 不用再往后看了
- sort方法 效率咋样?
- 算法效率
- 用 时间复杂度 描述
- O(nlogn)
- 这怎么理解?
- 排序时间 和 列表长度 相关
- 对于 n维列表中 每一个位置
- 都得从 n个列表项中 挑一个出来
- 复杂度 是 O(n*n)
- O(n2)
- 可以优化吗?
-
经过优化之后
- 成为O(n*logn)
- log(n) 是 以二为底的对数
- 成为O(n*logn)
-
对于 同样长度的 列表
- cpu需要干的活 少了
- 完成时间 短了
- 电就 省下来了
- O(n)
- Big O Notation
- 大O表示法
- 时间复杂度表示方法
- 横轴 空间
- 纵轴 是 时间
help(list.sort)
- list.sort 共3个参数
- self
- key
- reverse
- self是自己
- 谁自己?
- 哪个 列表对象 调用方法
- 就是 哪个对象 自己
-
类 class
- 是 抽象的 数据类型
- list 就是 列表类
- 列表类 有一些 方法
-
对象 object
- 是 某个类的 实例对象
- instance object
nl.sort()
cl.sort()
-
各调各的
-
列表中 列表项的类型
- 可以
不同吗?
- 可以
- 两个列表项
- 字符串
- 整形
lst = ["oeasy",123]
lst[0]
lst[1]
type(lst[0])
type(lst[1])
- 类型 还是列表
- 列表项 是 不同类型的话
- 还能 排序 吗??
lst = ["oeasy", 123]
lst.sort()
- TypeError
- int 和 str
- 比不了大小
- 咋理解?
- 简化之后
"oeasy" < 123
- 整型变量 和 字符串变量
- 一个 是 名字
- 另一个 是 体重
- 驴唇不对马嘴
- 比不了 大小
- 也就 排不了序
- 这次我们了解
列表排序- 原地 完成
- in-place
- 排序规则 依赖于 列表项类型
| 数据类型 | 比较规则 |
|---|---|
| 数字型 | 基于数字直接比 |
| 字符串 | 转化为ASCII码 |
- 我就想让 字符串 和 数值 一起排序
- 有可能吗?
- 下次再说 👋
- 配套视频
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。





















