Skip to content

Latest commit

 

History

History
431 lines (296 loc) · 6.71 KB

File metadata and controls

431 lines (296 loc) · 6.71 KB
Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0122
- 这是 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

回忆

  • 这次我们 玩了节奏
    • 可以 让节奏成为套路
    • 也可以 让节奏独立空间
students = ["oeasy", "o2z", "o3z"]
math = [95, 96, 97]
chinese = [91, 92, 93]
score = list(zip(students, math, chinese))
print(score)
  • 缝合操作
    • 把列表里 同样位置的元素
      • 缝合 在一起

图片描述

  • 缝合里 的列表项
    • 怎么不是 中括号 包裹的呢??🤔

游乐场

[]
type([])
  • 一对中括号 是 空列表

图片描述

  • 一对小括号 是什么类型?

tuple

type(())
  • 小括号这个变量
    • 类型为 tuple
    • /ˈtʌpl/
    • 他泼

图片描述

  • 什么是tuple呢?

tuple词根

单词 中文
single 单一
double 双倍
triple 三倍
quadruple 四倍 /ˈkwɑːdrʊpl/
quintuple 五倍 /ˈkwɪntʃəpl/
  • 结尾多是:
    • -ple / -tuple
    • 来自 -plus
      • 折叠
      • 翻倍
    • 都叫 X‑tuple

帮助手册

help(tuple)
  • 看看官方的定义

图片描述

  • 元组是
    • 内建的 builtin
    • 不可变的 immutable
    • 序列 sequence
  • 中括号组成的 列表(list)
    • 好像也是 序列

对比

help(list)
  • 列表定义

图片描述

  • 列表是是

    • 内建的 builtin
    • 可变的 mutable
    • 序列 sequence
  • 什么是mutable呢?

mute

  • 给音轨静音🔇叫做mute

图片描述

  • 可以mute的音轨是可变的

    • mutable
  • im代表否定

    • impossible
    • immoral
    • immotal
  • 不可以变的音轨

    • 是immutable

tuple

  • 不可变的 序列
    • 叫 元组
    • tuple
示例 名称
(0, 1) 2‑tuple
(0, 2, 3) 3‑tuple
(1, "A", True) 3-tuple
  • 列表和元组
    • 都是 内建的
    • 都是 序列
      • 有次序
  • 元组 可以嵌套吗?

嵌套的多维元组

  • 元组 支持嵌套
t = (1, 2, (3, 4))
t[0]
t[1]
t[2]
t[2][0]
t[2][1]
  • 嵌套元组 也可以 用索引来 索引元组项
    • 和列表 一样

图片描述

  • tuple 和 list 相比
    • 就是不可变

列表(list)可变

  • 列表(list)可变
lst = [0, 1]
lst[0] 
lst[0] = 1
lst
  • 列表里面的列表项
    • 是 可以修改的
    • 是mutable的

图片描述

  • 对比元组呢?

修改元组

t = (0, 1)
t[0]
t[0] = 1
  • 尝试修改

图片描述

  • 元组里的 元组项
    • 是 不能修改的
    • 是 immutable的

pep-8的规范

  • 下列情况 避免空格
    • 大、中、小括号 内侧 边缘
    • 逗号 与 结束括号 之间
    • 逗号、分号、冒号 之前

图片描述

  • 写法 和 列表 一样

    • 就是 把[] 换成了 ()
  • 再去看看tuple的构造方法

缺省构造方法

图片描述

  • 如果 构造函数 没有参数
    • 返回 一个空元组

图片描述

构造方法

图片描述

  • 可迭代的变量
    • 字符串 str
    • 列表 list
    • 范围 range
  • 可以给 元组 初始化

构造元组

  • 用 可迭代变量 构造元组
t = tuple("oeasy")
t
t = tuple(range(5))
t
t = tuple([0, 1])
t
  • 和列表很像啊

图片描述

  • 列表 可以 转 元组
    • 那么 元组 可以 转 列表 吗?

列表和元组

t = tuple([0, 1])
t
l = list((0, 1))
l
  • 列表和元组
    • 可以相互转化

图片描述

  • 列表的方法
    • 元组 也都能用吗?

再看文档

  • 列表 有 不少 方法

图片描述

  • 元组 不能修改
    • 方法 比列表
    • 少得多

图片描述

  • 只能统计
    1. count
    2. index
  • 我们来试试

计数函数

  • count 计数
    • 总共有多少个?
t = tuple("oeasyo2z")
t
t.count("1")
t.count("e")
t.count("o")
  • 统计个数

图片描述

  • 计数方法也和列表一样

图片描述

  • 如何 被统计的在容器里呢?

容器

t = (0, 1, (2, 3))
t.count(2)
  • 找不到 2

图片描述

  • 因为2在容器中
    • count只能看到 当前容器中的东西
t.count((2, 3))
  • 只能看到(2, 3) 这个元组

图片描述

  • 想找2得进去
t[2]
t[2].count(2)
  • 在子容器中 就可以找到了

图片描述

索引函数

  • 索引方法 (index)
    • 找到你是第几个
    • 找到 元组项的索引

图片描述

  • 索引方法 和 列表的 一样
    • 三个参数
      1. 搜索值
      2. 开始位置 start
      3. 结束位置 stop

图片描述

  • 帮助里 还说啥了?

元组作为参数

help(tuple)
  • 元组 可以做构造函数 参数

图片描述

  • 元组本身
    • 也是可迭代对象
t1 = (0, 1)
id(t1)
t2 = tuple(t1)
t2
id(t2)
id(t1) == id(t2)
  • 效果

图片描述

  • 参照 帮助手册

    • tuple的参数 是 元组
    • 那么返回同一个对象(引用地址)
  • 元组也能切片和索引吗?

索引和切片

t = tuple(range(10))
  • 先来索引

图片描述

  • 切片和索引 都能使用
    • 切片结果类型 还是 元组

总结

  • 这次我们了解了元组(tuple)
  • 元组 也可以
    • 支持 索引 和 切片
    • 还可以 用
      • 计数函数(count)
      • 索引函数(index)
    • 既然 有了 列表
    • 为什么 还需要有 元组 呢??🤔
  • 下次再说 👋

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