Skip to main content
Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

List / Tuple / Set

下面给你一份 最系统、最清晰、可直接收藏的总结:Python list / tuple / set 的相同点 + 通用点 + 不同点对比体系。

🎯 1. list / tuple / set 的共同点(通用特性)

✅ 1.1 都是 容器类型(Container)

可以“装多个元素”。

x in container

均可使用:

  • len()
  • in / not in
  • for 循环遍历 ( 都是 Iterable (可迭代对象) )
  • 可以被转换成其他容器:list(), set(), tuple()

✅ 1.2 都是 可迭代对象(Iterable)

可以用于:

for x in obj:
    ...

也可以用于:

  • sum()
  • max() / min()
  • sorted()
  • enumerate()
  • zip()
  • map() / filter()

这些函数都接受 list / tuple / set。

✅ 1.3 都可以包含任意类型的元素

比如:

[1, "a", True]
(1, [2,3], {"x":1})
{1, 2, "abc"}

✅ 1.4 都支持解包(unpacking)

a, b, c = [1,2,3]
a, b, c = (1,2,3)
a, b, c = {1,2,3}   # 注意 set 是无序的

✅ 5. 都可以作为函数的可迭代参数

list(x)
tuple(x)
set(x)

✅ 6. 都可以被推导式生成(comprehension)

只有 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))

🎯 2. 主要区别对比(非常关键)

下面是最精华的总表:

🧩 核心对比表

特性 list tuple set
可变性 ✅ 可变 ❌ 不可变 ✅ 可变
是否允许重复
有序性 ✅ 保持顺序 ✅ 保持顺序 ❌ 无序
索引访问
切片访问
能否作为 dict key ✅(元素必须可哈希)
速度 一般 ✅ 最快
典型场景 动态列表 固定结构 去重、集合运算

🎯 3. 三者各自最重要的特性

🟦 tuple

  • 不可变 -> 拥有更高性能与安全性
  • 可哈希 -> 可作为 dict key 或 set 元素
  • 常用于函数“返回多个值”

🟩 list

  • 适合需要增删改的动态序列
  • 使用 append / pop 性能不错

🟧 set

  • 自动去重
  • 数学集合运算(非常强)
    • union(并集)
    • intersection(交集)
    • difference(差集)

🎯 4. 三者在某些操作上的统一性

4.1 都能用于 sorted()

sorted_list = sorted(my_list)
sorted_tuple = sorted(my_tuple)
sorted_set = sorted(my_set)   # 需要排序,因为 set 无序

4.2 都支持 len()

len(list)
len(tuple)
len(set)

4.3 都能转换成其他容器

tuple([1,2,3])
list((1,2,3))
set([1,2,2,3])

4.4 都可用于 for 遍历

🎯 5. 哪些操作是共同的?

操作 list tuple set
遍历
成员检查
长度
拆包
比较
可迭代
推导式(或类似) (生成器)

🎯 6. 不共同的操作(最容易记错)

操作 list tuple set
append
extend
pop
可哈希
集合运算
有序
切片
去重 ✅(天然)

🎯 7. 哪个更省内存?

tuple 最省内存,最快

  • 不能修改 -> Python 优化力度大

内存占用:tuple < list < set

🎯 8. 实战使用建议(最重要)

用 list 做动态可修改的数据结构

users = []
users.append(new_user)

用 tuple 做不可变配置、函数返回值、结构化字段

config = ("db.example.com", 5432)

用 set 去重,提高查找效率(O(1))

unique_ids = set(ids)

⭐ 总结(适合作为速查表)

共同点

  • 都是容器
  • 都可迭代
  • 都支持 len, in, for 遍历
  • 都可推导式生成(tuple 需生成器)
  • 都可以相互转换

主要区别

  • list:可变、有序、可重复、可索引
  • tuple:不可变、有序、可重复、可哈希
  • set:可变、无序、不可重复、无索引、支持集合运算

性能与用途

  • tuple:最快、最省内存 -> 结构体、返回值、常量
  • list:适合动态序列 -> 追加、删除
  • set:适合去重、集合运算 -> 大数据去重 & 查找 O(1)