Skip to content

Latest commit

 

History

History
438 lines (292 loc) · 7.5 KB

File metadata and controls

438 lines (292 loc) · 7.5 KB
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` 
---

列表 - 嵌套 embedded

回忆

  • 上次我们用 元组 做了两个应用

    1. 欢乐颂
    2. 大写数字
  • 元组 和 列表 都是 序列

图片描述

  • 用 元组 不用列表的原因是

    1. 元组 是 不可变的(immutable)
      • 更适合 表示 固定的序列
    2. 元组 比 列表 占用更少内存
  • 还有 啥 序列类型 呢?🤔

字符串

图片描述

  • 字符串 是 字符的序列

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
  • 都属于序列
    • 有序的排列
    • 可以用 序列的 方法操作

图片描述

  • 无序的 容器 吗??🤔
  • 下次再说 👋

  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。