Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0124
- 这是 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`
----
上次我们用 元组 做了两个应用
- 欢乐颂
- 大写数字
-
元组 和 列表 都是 序列
-
用 元组 不用列表的原因是
- 元组 是 不可变的(immutable)
- 更适合 表示 固定的序列
- 元组 比 列表 占用更少内存
- 元组 是 不可变的(immutable)
-
还有 啥 序列类型 呢?🤔
- 序列 序列
- 有序的排列
- 在 python3 的在线文档中
- 字符串 是 字符的序列
"o" in "oeasy"
"oe" in "oeasy"
"os" in "oeasy"
"os" not in "oeasy"
- 如果 有元素 在里面
- 就返回 True
- 否则
- 返回 False
- 初始化
s1 = "oeasy"
s2 = "o2z"
- 序列运算加法
s1 + s2
- 两个字符串拼接
- 和列表一样
- 元组呢?
(0) + (1)
- 没有逗号
- 经历了 自动解包
- 打上逗号
(0,) + (1,)
- 就没有问题了
s2 * 2
- 乘法 是 加法的累积
- 和列表 一样
- 和元组 也一样
s1 = "oeasy"
s2 = "o2z"
3 * s1 + s2
3 * (s1 + s2)
- 结果
- 关于字符串
- 还有 一种 拼合方式
- 就是 两个字符串常量 直接拼
- 用空格拼接字符序列
- 非常快速
- 但是
- 这个仅仅限于字符串常量
- 如果是 变量
- 就不行了
s = "oeasy"
- 我们当初 学索引
- 就是从 字符串开始的
- 正向索引没有问题
- 逆向呢?
- 开头
- 索引是 0
- 头尾相连后
- 倒数第1
- 是 -1
| 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| o | e | a | s | y |
| -5 | -4 | -3 | -2 | -1 |
- 规律 和 列表 一样的
- 切片呢?
| 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| o | e | a | s | y |
s = "oeasy"
s[1:2]
s[1:3]
s[1:4]
s[1:5]
- 切片的因素
- start
- stop
- 前闭后开
- 负数切片怎么做呢?
- 先选择范围
- 控 开始位置
- start
- 5 - 4 = 1
- 控 结束位置
- stop
- 5 - 1 = 4
- 控 开始位置
| 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| o | e | a | s | y |
| -5 | -4 | -3 | -2 | -1 |
s[-4:-1]
s[1:4]
- 果断下刀!
- 想用 负数序号 切到 尾巴?
s[-4:]
- 就把 stop位置 彻底放开
s[0:5:2]
s[0:5:3]
s[0:5:4]
s[0:5:5]
- 步长步长
- 一步有多长
- 步长可以为负数么?
s[::-1]
- 步长为负数
- 倒着走
- 字符串 翻转了
- 好像 reverse 了
- 反转效果
s1 = "分久必合,合久必分"
s1[::-1]
- 这样子
- 一本书倒背如流也很简单啊
- 再来试试
s = "道可道非恒道"
- 想要截取
恒道
- 有几种方式 可以切出"恒道" 呢?
- 如果 只截 一"道"字
- 有
几种截取方法呢?
- 有
- 一个字符 还构成字符串 么?
s[2]
type(s[2])
- 串上 只有 一个鸡排
- 但也算 鸡排串
- 单字符的字符串是一种特殊情况
- Special cases aren't special enough to break the rules.
- 特殊情况 不足以打破规则
- 单字符的字符串
- 有点特殊 但还是字符串
- 空串
- 更特殊 依然还是 字符串
- 这些函数 字符序列都支持
- 长度 len
- 最大值 max
- 最小值 min
- 大小比的是 ascii 序数
- ord 函数
ord("a")
ord("y")
- 可以用 index
- 找出 字符的 索引位置 吗?
s = "oeasyo2z"
s.index("o")
s.index("o", 1)
s.index("o", 6)
- 找出"oeasy"中
- "o"的位置
s = "打南边来了个喇嘛,手里提拉着五斤鳎目。打北边来了个哑巴,腰里别着个喇叭。南边提拉鳎目的喇嘛要拿鳎目换北边别喇叭哑巴的喇叭。哑巴不愿意拿喇叭换喇嘛的鳎目,喇嘛非要换别喇叭哑巴的喇叭。喇嘛抡起鳎目抽了别喇叭哑巴一鳎目,哑巴摘下喇叭打了提拉鳎目的喇嘛一喇叭。也不知是提拉鳎目的喇嘛抽了别喇叭哑巴一鳎目,还是别喇叭哑巴打了提拉鳎目的喇嘛一喇叭。喇嘛炖鳎目,哑巴嘀嘀嗒嗒吹喇叭。"
s.count("喇嘛")
s.count("鳎目")
s.count("哑巴")
s.count("喇叭")- 不但可以 统计单个字符
- 也可以 统计多个字符
- 字符串 也可以 平行赋值
- 两边数量 必须相等
- 这次复习了 字符序列
- 也就是 字符串
- 字符序列 和 列表、元组一样
- 序列的东西他全能用
- in
- 加法、乘法运算
- 索引
- 切片
- index
- len
- max
- min
- 序列的东西他全能用
- 都属于序列
- 有序的排列
- 可以用 序列的 方法操作
- 有
无序的容器 吗??🤔 - 下次再说 👋
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。

































