Skip to content

Latest commit

 

History

History
216 lines (155 loc) · 5.51 KB

116-201638-容器_container_总结_list_tuple_set_dict_summary.sy.md

File metadata and controls

216 lines (155 loc) · 5.51 KB
show version enable_checker
step
1.0
true

字典类型

回忆

  • 上次学习了字典
  • 字典可以更新
    • update
    • {**d1,**d2}
  • 可以试着来
    • 试着设置字典项
      • setdefault
    • 试着获取字典项
      • get
    • 字典还可以直接赋值
  • 字典
    • 本质上是键值对的集合
  • 还是总结一下各种容器吧😱
  • 这还真是一个大总结呢😱
  • 来吧!

首先什么是容器

图片描述

  • 容器就是装东西的东西
  • 瓶瓶罐罐之类的
  • 里面放着各种菜
  • 处理完了也放在容器里面
  • 容器里面有容器怎么理解

容器嵌套

图片描述

  • 比如这个托盘
  • 盘子是菜的容器
  • 托盘是盘子的容器
  • 桌子是托盘的容器
  • 厨房是桌子的容器
  • python 编程中都有一些什么样的容器呢?

嵌套举例

  • 有颜色库其中有两个颜色
    • 大红 0xff2121
    • 石青 0x172234

图片描述

  • 我要把他做成一个字典

字典制作

  • 这里面制作了一个字典

图片描述

  • 字典有两个 key
    • 大红
    • 石青
  • 这两个 key 各自对应一个 rgb 元素的元组
  • 那这个字典应该如何引用呢?

字典引用

图片描述

  • 可以把元组改成字典吗?
  • 试试

字典里面有字典

  • 这样是可以吗?

图片描述

  • 尝试调用

字典中的字典

  • 可以进行引用

图片描述

  • 这样就更加语义化了

图片描述

  • 结构非常明确

容器类型

  • 序列类
    • 列表
    • 元组
    • 字符串
    • 字节序列
  • 集合类
    • set 集合
    • frozenset 冰封集合
  • 字典类
    • 字典 dict

1.容器对象是否有次序

  • 从次序上来对比一下

图片描述

  • 序列类都是有顺序的
    • sequence 就是序列
    • 序列序列名字就带一个顺序的序
    • 前后颠倒就不是这个顺序了
  • 集合和字典呢?

图片描述

  • 集合类是没有顺序的
    • 顺序并不影响对象本身

2.容器对象是否可变

  • 可变
    • 列表
    • 集合
    • 字典
  • 不可变
    • 元组
    • 字符串
    • 字节序列
    • 不可变集合
  • 最后我们来个表格

表格

类型名称 描述 是否可变类型 是否有顺序 举例
列表 list [1,2,3]、["a","b"],list(1,2)
元组 tuple (1,2)
字符串 str "oeasy"
字节序列 bytes b"oeasy"
集合 set {1, 2, 3}
不可变集合 frozenset frozenset([1,2,3])
字典 dict {'a':1,'b':2}

图片描述

  • 关于不可变集合还有点疑问
    • 不是说列表对象不可以作为集合项么?
  • 为什么可以用 frozenset([1,2,3])这种形式?

解释

  • 列表元素不能作为集合的集合项
    • 指的是下面这种情况

图片描述

  • 这其实指的是列表不能作为集合中的元素项
  • 但是我们现在是把列表作为初始化集合的参数
    • 列表就是一个iterable的对象
    • 是可以作为集合构造函数的参数的

图片描述

  • 这是没有问题的
  • 集合和字典都是大括号
  • 他们之间是什么关系呢?

集合和字典

  • 共同点

    • 都是使用花括号{}将任意对象括起来的集合
    • 他们都是无序的容器对象
    • 都是一种可变的容器对象
  • 不同点

    • 字典
      • 是由键值对(key-value)对组成的集合
      • 键(key)是唯一的
      • 如果键(key)重复的话
        • 后面的键值对会替换前面的
      • 值不需要唯一
      • 列表和字典可以作为值(value)
      • 字典支持使用key作为键进行索引
    • 集合
      • 没有key
        • 也就不支持使用key作为下标索引
      • 集合中的元素是唯一的
        • 列表和字典不可以作为集合项
      • 可用于元组或者列表中的元素去重
  • 可以把字典理解为一种特殊的集合

    • 键值对的集合

图片描述

  • 不过可以从上图看出
    • 字典才是python更常用的数据类型

总结

  • 这些就是我们接触到的各种容器

图片描述

  • 数据结构在程序流程里可以发挥重要的作用
    • 什么是程序流程呢?🤔
  • 下次再说 👋