当前位置:首页>python>Python 四大容器速查表!list/tuple/dict/set 一次吃透

Python 四大容器速查表!list/tuple/dict/set 一次吃透

  • 2026-10-11 07:01:27
Python 四大容器速查表!list/tuple/dict/set 一次吃透

我挖掘了一个巨牛的 人工智能 学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

https://www.captainbed.cn/kh

一、基础总览表

类型
符号
是否可变
有序性
存储元素
允许重复
核心用途
列表 list
[]
✅ 可变
✅ 有序
任意数据类型
✅ 允许重复
增删改查、有序数组、临时数据容器
元组 tuple
()
❌ 不可变
✅ 有序
任意数据类型
✅ 允许重复
固定数据、函数返回多值、字典 key
字典 dict
{k:v}
✅ 可变
✅ 3.7 + 插入有序
键值对(key+value)
key 不可重复,value 可重复
映射关系,根据 key 快速取值
集合 set
{}
✅ 可变
❌ 无序
仅不可变类型(数字 / 字符串 / 元组)
❌ 自动去重
去重、交集 / 并集 / 差集运算

二、逐个详细拆解

1. 列表 list []

特性

  1. 可变
    :支持增、删、改元素  
    lst = [1, 2, 3]lst[0] = 99  # 修改lst.append(4) # 新增lst.pop()     # 删除
  2. 有序
    :按下标 lst[0] 取值,插入顺序永久保留
  3. 允许重复
    元素:[1,1,2] 合法
  4. 元素无类型限制,可嵌套列表、字典等可变对象

适用场景

  • 需要频繁修改、追加、删除的数据;
  • 有序数据存储(学生成绩、文件路径序列)。

2. 元组 tuple ()

特性

  1. 不可变(核心特点)
    :定义后不能修改、新增、删除任何元素
    t = (1,2,3)t[0] = 99 # 直接报错 TypeError
  2. 有序
    :支持下标取值t[0]、切片t[:2]
  3. 允许重复元素 (1,1,2)
  4. 因为不可变,可以作为字典的 key;列表不行

适用场景

  • 数据不希望被修改(坐标、配置常量);
  • 函数一次性返回多个返回值;
  • 作为字典 key、集合内元素。

小细节:单元素元组必须加逗号 (5,),(5) 只是数字括号,不是元组。

逗号才是元组的灵魂!

Python 语法里,圆括号 () 有两个身份:

  1. 数学括号
    :用来改变运算优先级,(5) 只是数字 5;
  2. 元组标记
    :靠逗号 , 识别,只要里面有逗号,才认定是元组。

1. 对比两段代码

# 写法1:(5) 只有括号,无逗号a = (5)print(type(a))  # <class 'int'>,就是普通整数# 写法2:(5,) 带末尾逗号b = (5,)print(type(b))  # <class 'tuple'>,真正的元组
  • (5)
    :括号只是包裹数字,等价直接写 5;
  • (5,)
    :逗号是元组的标志性符号,告诉解释器:这是一元组。

2. 多元素元组验证(逗号才是本体,括号可省略)

元组真正区分不靠括号,靠逗号:

# 正常多元素元组t1 = (1, 2, 3)print(type(t1))# 去掉括号,照样是元组t2 = 1, 2, 3print(type(t2))

输出都是 tuple。 由此可见:逗号才是元组的核心标识,括号只是辅助包装。


3. 字典 dict {key: value}

特性

  1. 可变
    :可新增、修改、删除键值对
  2. 有序
    :Python3.7 及以上,插入顺序保留
  3. 存储结构:唯一键key : 任意值value
    • key 要求:必须是不可变类型(数字、字符串、元组),不能重复;重复 key 会覆盖旧值
    • value 无限制,可重复、可存列表 / 字典
  4. 不能用下标数字取值,只能通过 dict["key"] 按键查找
d = {"name":"小明", "age":20}d["age"] = 21  # 修改valued["sex"] = "男" # 新增键值对

适用场景

  • 一对一映射关系:用户信息、配置参数、ID 对应数据;
  • 需要根据名称 / 标识快速查找内容。

4. 集合 set {1,2,3}

特性

  1. 可变集合 set
    ,还有不可变版本frozenset
  2. 无序
    :没有下标,不能通过set[0]取值,每次打印顺序随机
  3. 自动去重
    :重复元素存入直接丢弃
    s = {1,1,2,2,3}print(s) # {1,2,3}
  4. 元素限制:只能存不可变类型(数字、字符串、元组),列表 / 字典不能放入集合
  5. 专属能力:集合运算(交集、并集、差集)
    a = {1,2,3}b = {3,4,5}print(a & b) # 交集 {3}print(a | b) # 并集 {1,2,3,4,5}print(a - b) # 差集 {1,2}

适用场景

  • 快速对列表去重;
  • 判断两个数据集重合、对比差异。

三、高频易混考点

  1. 可变 vs 不可变核心区分
    • 可变:list /dict/set → 内存原地修改,不生成新对象
    • 不可变:tuple /str/int → 修改只能新建对象,原数据不变
  2. 哪些能做字典 key、集合元素?
     只有不可变类型:int、float、str、tuple; list、dict、set 可变,禁止作为 key / 集合成员。
  3. 有序 vs 无序
    • 有序:list、tuple、dict (3.7+),支持下标 / 按插入顺序遍历
    • 无序:set,无下标,不记录插入顺序
  4. 去重需求优先用集合lst = list(set(原列表))
     一行完成去重(缺点:会打乱原有顺序)

四、极简一句话总结

  1. 列表:有序可改,通用数组;
  2. 元组:有序不可改,安全固定数据;
  3. 字典:键值映射,按键快速查找;
  4. 集合:无序自动去重,用于数据对比、去重。

有序真正的含义是:插入顺序被记住

# 字典从 Python 3.7 开始有序d = {}d["c"] = 3d["a"] = 1d["b"] = 2print(list(d.keys()))  # ['c', 'a', 'b'] —— 和插入顺序一致# 集合依然无序s = {"apple", "banana", "cat", 99999}print(s)# 随机种子开启后,每次打印顺序完全不一样

所以"有序"是指:遍历时,元素出现的顺序和当初插入的顺序一致。

最新文章

随机文章