核心要点

  • list 可变、tuple 不可变

  • tuple 可哈希(元素可哈希时)、更省内存

  • 知道各自适用场景

简要回答

list 用 [],可变,适合动态序列;tuple 用 (),不可变,可作 dict 键、函数多返回值,通常略省内存。

标准回答

list tuple
语法 [1, 2] (1, 2)1, 2
可变
可哈希 ✅(元素均可哈希时)
方法 append, extend, sort... 仅 count, index
内存 略多 略少

选型

  • 长度/内容会变 → list
  • 固定记录(坐标、RGB)、dict 键、函数返回多值 → tuple
  • namedtuple / dataclass 可读性更好

注意:单元素 tuple 须 (1,)(1) 只是带括号的 int。

性能:tuple 创建与迭代略快;大量同质数据可考虑 array.array 或 NumPy。

回答思路

  • 【定义】用一句话说清「Python 中 list 与 tuple」

  • 【原理】讲清关键机制或步骤(2~3 点)

  • 【例子】举一个真实项目、论文或产品中的例子

  • 【对比】与易混淆概念或替代方案比较(如有)

  • 【收尾】总结适用场景 + 一个局限或风险

延伸学习

结合侧栏延伸学习中的知识库与术语;行业背景见 AI 资讯(永久保留)。相关:资讯

常见误区

⚠️ 常见踩坑

只罗列名词、不会举例;混淆相似概念;忽略工程约束(成本、延迟、数据质量)。不确定时应主动说明假设。

追问

追问 1tuple 真的完全不可变吗?

tuple 自身不能增删改元素,但若元素是 mutable list,list 内容仍可改:t = ([1],); t[0].append(2) 合法。此时 tuple 不可哈希。

追问 2何时用 namedtuple 或 dataclass 替代 tuple?

字段有语义名时 Point(x=1, y=2)(1, 2) 可读。dataclass 功能更强(默认值、方法);namedtuple 更轻量不可变。

追问 3list * n 有什么坑?

[[0]] * 3 三个元素引用同一 list,改 [0][0]=1 全变。应 [[] for _ in range(3)][0] * 3(不可变元素安全)。

🔗 相似问题

同一考点的不同问法,换着练更稳

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

按主题分类的相关资源,便于系统复习