Skip to content

Latest commit

 

History

History
239 lines (156 loc) · 5.34 KB

096-192296-列表_嵌套_embeded_二维列表_多维列表.sy.md

File metadata and controls

239 lines (156 loc) · 5.34 KB
show version enable_checker
step
1.0
true

列表 - 嵌套 embedded

回忆

  • 上次我们了解了乱序
    • 排序可以让列表有顺序
    • 随机洗牌可以让列表没有顺序
    • 洗牌、码牌、抓牌、看牌
    • 理牌可以让自己手里的牌有适合出牌的次序
  • 无序有序都用
    • 无序带来混乱的快乐
    • 有序带来理性的方便

图片描述

  • 目前所有列表都是一维列表
  • 可以有更高维度的列表吗?🤔

去游乐场

  • 分析append和extend的区别

图片描述

  • 这如何理解呢?

图片描述

  • 这还是个列表吗?

观察

  • l确实还是列表
    • 总共有三个列表项的列表

图片描述

  • 第2个列表项是什么呢?

再观察

  • 第二个列表项 还是
    • 一个列表
    • 2个元素的 列表

图片描述

  • 这是列表的列表?

套娃?

  • 容器的容器
    • 不就成了套娃🪆吗?

图片描述

  • 这个列表的列表项
    • 也能用索引来访问吗?

二维列表

  • 原来的列表是一个纯列表

    • 属于一维列表
  • 这种列表的列表叫什么名字呢?

图片描述

  • 列表的列表
    • 属于二维列表
  • 本来 l 是一个 3*3 的数组
    • 对他进行了索引操作[0]
  • 得到了这个二维数组的第一个元素
    • 一个一维列表[1, 2, 3]
    • 可以进一步进行索引吗?

索引降维

  • 通过索引找到具体的列表项

图片描述

  • 可以再对 a[0] 这个一维数组进行
    • 索引操作
    • 切片操作
  • 先索引
    • 再切片
  • 那我可以先切片后索引吗?

切片操作

  • 二维列表先切片
    • 得到的还是一个二维列表
    • 是按照行切出来的列表
  • 再切片得到的还是二维列表
    • 还是按照行切出来的列表

图片描述

  • 可以对这个二维列表
    • 再进行切片或者索引的操作
    • 索引是降维
    • 切片是筛减
  • 可以用负数进行索引和切片吗?

负数

  • 负数用法和一维列表一样

图片描述

  • 如果列表超过了二维
    • 索引和切片也是这样吗?

多维列表

  • 多维列表

图片描述

  • 索引和切片的模式
    • 没有变
  • 多维列表可以排序吗?

排序前提

  • 排序的前提是能够比较大小

图片描述

  • 列表型不能和整型比较
  • 列表型可以和列表型比较吗?

尝试比较

  • 同一维度的列表对象可以比较

图片描述

  • 所以特定的列表对象可以排序

构造环境

图片描述

  • 多维列表可以排序
  • 为什么呢?

列表比较

  • 排序的前提是比较
    • 列表是可以进行比较的

图片描述

  • 那列表比较的原则是什么呢?

图片描述

  • 先比较第0个元素
    • 如果不同
      • 就得出结论
    • 如果相同
      • 再比较第1个元素
  • 以此类推

图片描述

  • 排序后的列表还是原来的列表吗?

观察内存

图片描述

  • 多维列表地址不变
  • 多维列表的列表项引用的地址变化
  • 多维列表的列表项可以排序吗?

列表项排序

图片描述

  • 列表项l[0]
    • 还可以进行排序的
    • 排序不影响列表自身的地址
  • 多维列表会有什么特殊用法

嵌套 embedded

l1 = ["oeasy",[165,70]]
l2 = l1

图片描述

  • 看起来是可以用列表直接赋值
  • 可以修改相应的值吗?

索引嵌套元素

l1 = ["oeasy",[165,70]]
l2 = l1
l1[0] = "o2z"
print(l2)
l2[0] = "o3z"
print(l1)
  • 运行结果

图片描述

  • 这两个列表中的名字
    • 一改全改

总结

  • 这次我们了解了列表的嵌套(embedded)
    • 列表项也可以是列表
    • 可以无限嵌套下去

图片描述

  • 可是多维的时候
    • 使用列表赋值
    • 会把地址直接赋过去
    • 导致一改全改
    • 这怎么办呢???🤔
  • 下次再说 👋