List / Tuple / Set
下面给你一份 最系统、最清晰、可直接收藏的总结:Python list / tuple / set 的相同点 + 通用点 + 不同点对比体系。
可以“装多个元素”。
x in container
均可使用:
- len()
- in / not in
- for 循环遍历 ( 都是 Iterable (可迭代对象) )
- 可以被转换成其他容器:list(), set(), tuple()
可以用于:
for x in obj:
...
也可以用于:
- sum()
- max() / min()
- sorted()
- enumerate()
- zip()
- map() / filter()
这些函数都接受 list / tuple / set。
比如:
[1, "a", True]
(1, [2,3], {"x":1})
{1, 2, "abc"}
a, b, c = [1,2,3]
a, b, c = (1,2,3)
a, b, c = {1,2,3} # 注意 set 是无序的
list(x)
tuple(x)
set(x)
只有 set 和 list 支持 “直接推导式”,tuple 需要生成器包装。
list 推导式
[x*2 for x in range(5)]
set 推导式
{x*2 for x in range(5)}
tuple 推导式(其实是生成器)
tuple(x*2 for x in range(5))
下面是最精华的总表:
🧩 核心对比表
| 特性 | list | tuple | set |
|---|---|---|---|
| 可变性 | ✅ 可变 | ❌ 不可变 | ✅ 可变 |
| 是否允许重复 | ✅ | ✅ | ❌ |
| 有序性 | ✅ 保持顺序 | ✅ 保持顺序 | ❌ 无序 |
| 索引访问 | ✅ | ✅ | ❌ |
| 切片访问 | ✅ | ✅ | ❌ |
| 能否作为 dict key | ❌ | ✅(元素必须可哈希) | ❌ |
| 速度 | 一般 | ✅ 最快 | 快 |
| 典型场景 | 动态列表 | 固定结构 | 去重、集合运算 |
- 不可变 -> 拥有更高性能与安全性
- 可哈希 -> 可作为 dict key 或 set 元素
- 常用于函数“返回多个值”
- 适合需要增删改的动态序列
- 使用 append / pop 性能不错
- 自动去重
- 数学集合运算(非常强)
- union(并集)
- intersection(交集)
- difference(差集)
sorted_list = sorted(my_list)
sorted_tuple = sorted(my_tuple)
sorted_set = sorted(my_set) # 需要排序,因为 set 无序
len(list)
len(tuple)
len(set)
tuple([1,2,3])
list((1,2,3))
set([1,2,2,3])
| 操作 | list | tuple | set |
|---|---|---|---|
| 遍历 | ✅ | ✅ | ✅ |
| 成员检查 | ✅ | ✅ | ✅ |
| 长度 | ✅ | ✅ | ✅ |
| 拆包 | ✅ | ✅ | ✅ |
| 比较 | ✅ | ✅ | ✅ |
| 可迭代 | ✅ | ✅ | ✅ |
| 推导式(或类似) | ✅ | (生成器) | ✅ |
| 操作 | list | tuple | set |
|---|---|---|---|
| append | ✅ | ❌ | ❌ |
| extend | ✅ | ❌ | ❌ |
| pop | ✅ | ❌ | ❌ |
| 可哈希 | ❌ | ✅ | ❌ |
| 集合运算 | ❌ | ❌ | ✅ |
| 有序 | ✅ | ✅ | ❌ |
| 切片 | ✅ | ✅ | ❌ |
| 去重 | ❌ | ❌ | ✅(天然) |
tuple 最省内存,最快
- 不能修改 -> Python 优化力度大
内存占用:tuple < list < set
users = []
users.append(new_user)
config = ("db.example.com", 5432)
unique_ids = set(ids)
- 都是容器
- 都可迭代
- 都支持 len, in, for 遍历
- 都可推导式生成(tuple 需生成器)
- 都可以相互转换
- list:可变、有序、可重复、可索引
- tuple:不可变、有序、可重复、可哈希
- set:可变、无序、不可重复、无索引、支持集合运算
- tuple:最快、最省内存 -> 结构体、返回值、常量
- list:适合动态序列 -> 追加、删除
- set:适合去重、集合运算 -> 大数据去重 & 查找 O(1)