oeasy Python 124 序列_字符串_string_str

oeasy python 124 字符串操作与序列类通用方法

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

序列_字符串_string_str

回忆

  1. 欢乐颂
  2. 大写数字
  • 元组 和 列表 都是 序列
  • 用 元组 不用列表的原因是
  1. 元组 是 不可变的(immutable)
  • 更适合 表示 固定的序列
  1. 元组 比 列表 占用更少内存
  • 还有 啥 序列类型 呢?🤔
字符串
  • 序列 序列
  • 有序的排列
  • 在 python3 的在线文档中
  • 字符串 是 字符的序列
in 是否包含
复制代码
"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位置 彻底放开
切片步长 step
复制代码
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])
  • 串上 只有 一个鸡排
  • 但也算 鸡排串
  • 单字符的字符串是一种特殊情况
python之禅
  • Special cases aren't special enough to break the rules.
  • 特殊情况 不足以打破规则
  • 单字符的字符串
  • 有点特殊 但还是字符串
  • 空串
  • 更特殊 依然还是 字符串
长度、最大最小值
  • 这些函数 字符序列都支持
  • 长度 len
  • 最大值 max
  • 最小值 min
  • 大小比的是 ascii 序数
  • ord 函数

    ord("a")
    ord("y")

  • 可以用 index

  • 找出 字符的 索引位置 吗?
index 索引位置
复制代码
s = "oeasyo2z"
s.index("o")
s.index("o", 1)
s.index("o", 6)
  • 找出"oeasy"中
  • "o"的位置
count 计数
复制代码
s = "打南边来了个喇嘛,手里提拉着五斤鳎目。打北边来了个哑巴,腰里别着个喇叭。南边提拉鳎目的喇嘛要拿鳎目换北边别喇叭哑巴的喇叭。哑巴不愿意拿喇叭换喇嘛的鳎目,喇嘛非要换别喇叭哑巴的喇叭。喇嘛抡起鳎目抽了别喇叭哑巴一鳎目,哑巴摘下喇叭打了提拉鳎目的喇嘛一喇叭。也不知是提拉鳎目的喇嘛抽了别喇叭哑巴一鳎目,还是别喇叭哑巴打了提拉鳎目的喇嘛一喇叭。喇嘛炖鳎目,哑巴嘀嘀嗒嗒吹喇叭。"

s.count("喇嘛")
s.count("鳎目")
s.count("哑巴")
s.count("喇叭")
  • 不但可以 统计单个字符
  • 也可以 统计多个字符
回顾
平行赋值(parallel assignment)
  • 字符串 也可以 平行赋值
  • 两边数量 必须相等
总结
  • 这次复习了 字符序列
  • 也就是 字符串
  • 字符序列 和 列表、元组一样
  • 序列的东西他全能用
  • in
  • 加法、乘法运算
  • 索引
  • 切片
  • index
  • len
  • max
  • min
  • 都属于序列
  • 有序的排列
  • 可以用 序列的 方法操作
相关推荐
一个假的前端男1 小时前
Flutter 实现 BLE 设备 WiFi 配网流程实践
开发语言·flutter
吕源林2 小时前
Golang如何做本地缓存加速_Golang本地缓存教程【核心】
jvm·数据库·python
_深海凉_2 小时前
LeetCode热题100-26. 删除有序数组中的重复项
python·算法·leetcode
武帝为此2 小时前
【热卡填充法介绍】
人工智能·python·机器学习
片酷2 小时前
【Isaacsim&Isaaclab】安装教程
linux·开发语言·python
Magic@2 小时前
Redis学习[1] ——基本概念和数据类型
linux·开发语言·数据库·c++·redis·学习
黑不溜秋的2 小时前
C++ STL reduce 用法
开发语言·c++
倾听一世,繁花盛开2 小时前
Java语言程序设计——篇十三(1)
java·开发语言·ide·eclipse
大腕先生2 小时前
通用分页超详细介绍(附带源代码解析&页面展示效果)
xml·java·linux·服务器·开发语言·前端·idea