Python中元组就是不可修改的列表,可以这样说吗?
花半小时把 python 基础学完了,上面的理解对吗?
Python中元组就是不可修改的列表,可以这样说吗?
12 回复
- 元组可哈希 - 只有元组可以当作字典的 key
2. 处理大量数据时,使用元组效率较高
可以这么说,但不够准确。
元组和列表的核心区别确实是可变性:列表可变(可增删改元素),元组不可变(创建后不能修改)。但它们在设计目的和特性上还有重要差异:
- 语义不同:元组常用于存储异构数据(如坐标
(x, y)、数据库记录),列表常用于存储同构数据(如一系列数字)。 - 性能差异:元组占用内存更小、创建速度更快,适合作为字典的键或集合的元素(因为不可变哈希)。
- 方法支持:列表有
append()、extend()、remove()等方法,元组只有count()和index()等不可变相关方法。
示例对比:
# 列表可变
lst = [1, 2, 3]
lst[0] = 99 # 允许
lst.append(4)
# 元组不可变
tup = (1, 2, 3)
tup[0] = 99 # 报错:TypeError
总结:元组是“不可变序列”,但不仅仅是“不可修改的列表”。
不可变容器
其实我也一直是这么理解的,有没有什么更深入的理解。
话说元祖和 frozenset 又有什么区别?
set 和 list 的区别
元组里放列表的话就不可当 key 了,这是我刚看到的
当然。。因为元组里面放了 list 就不能 hash 了啊
“有些 Python 入门教程把元组称为“不可变列表”,然而这并没有完全概括元组的特点。除了用作不可变的列表,它还可以用于没有字段名的记录。” ——《流畅的 Python 》
可以但是不完整
tuple 是有顺序的,,所以可以存多个相同的值,比如(1, 2, 1)
set 是集合,同一个值只能存一个,,所以{1, 2, 1}会自动变成{1, 2}
tuple 可以理解为 可 hashable / 性能更好(依赖于不可变的特性) /不可变 的列表
暂时我的知识库里就这个了。

