Python 中四大核心容器类型 —— 列表(list)、元组(tuple)、字典(dict)、集合(set) 的关键区别,特性、用途和适用场景。

📊 Python 四大容器类型横向对比表

特性 / 容器列表 list元组 tuple字典 dict集合 set
定义方式[1, 2, 'a'](1, 2, 'a')1, 2, 'a'{'name': 'Tom', 'age': 20}dict(name='Tom'){1, 2, 3}set([1,2,3])
是否有序✅ 是(按插入顺序)✅ 是(不可变,顺序固定)✅ 是(Python 3.7+ 保证插入顺序)❌ 否(无序,元素位置不固定)
是否可变✅ 可变(可增删改)❌ 不可变(创建后不能修改)✅ 可变(可增删改键值对)✅ 可变(可增删元素)
元素是否唯一❌ 允许重复❌ 允许重复键(key)必须唯一
值(value)可重复
✅ 元素必须唯一(自动去重)
元素类型要求任意类型,可混合任意类型,可混合键必须是不可变类型(如 str, int, tuple)
值任意
元素必须是不可变类型(如 str, int, tuple)
是否支持索引✅ 支持 lst[0]✅ 支持 tup[0]❌ 不支持索引
✅ 通过键访问:d['name']
❌ 不支持索引(无序)
是否支持切片✅ 支持✅ 支持❌ 不支持❌ 不支持
常用操作append, pop, sort, len, sumindex, count, 解包keys(), values(), items(), get()add, remove, union, intersection
典型用途存储有序、可变的数据序列
(如成绩、日志、队列)
存储不可变、结构固定的数据
(如坐标 (x,y)、RGB 颜色)
存储键值映射关系
(如用户信息、配置项)
去重、成员检测、数学集合运算
(如标签去重、交集/并集)
性能特点尾部增删快,中间插入慢创建快,访问快,内存小查找/插入/删除平均 O(1)(哈希表)成员检测 O(1),去重高效
是否可哈希❌ 不可作为 dict 的 key 或 set 的元素✅ 可哈希(若元素都可哈希)❌ 不可哈希❌ 不可哈希(但 frozenset 可哈希)
空容器写法[]list()()tuple(){}dict()set()(⚠️ {} 是空字典!)

🔍 关键点解析(新手易错)

1. 空集合 vs 空字典

s = {}      # ❌ 这是空字典!
s = set()   # ✅ 这才是空集合

2. 元组的“陷阱”

t = (5)     # ❌ 这是整数 5,不是元组!
t = (5,)    # ✅ 单元素元组必须加逗号

3. 字典的键必须可哈希

d = {[1,2]: "error"}   # ❌ 报错!列表不可哈希
d = {(1,2): "ok"}      # ✅ 元组可哈希,合法

4. 集合自动去重

s = {1, 2, 2, 3}
print(s)  # {1, 2, 3}

5. 字典有序性

  • Python 3.6(CPython)开始有序,3.7+ 成为语言标准,可放心依赖插入顺序。

🧠 快速选择指南(根据需求选容器)

你的需求推荐容器
要一个能随时增删改的序列list
数据结构固定,不想被修改(安全/性能)tuple
用名字/ID 快速查找对应值dict
去除重复项,或做交集/并集运算set
需要作为字典的 key 或集合的元素tuple(且元素都不可变)

💡 一句话记忆口诀:

  • 列表:有序可变,啥都能装
  • 元组:有序不可变,安全又省空间
  • 字典:键值对,查得快,键要唯一且不可变
  • 集合:无序唯一,去重神器,支持数学运算