
在 Python 的数据结构家族中,元组(Tuple)常常被误解为“跟列表差不多,只是不能改”。
但真相是——元组的不可变性,不只是“锁住”数据,它在数据安全、性能优化、代码语义等方面,都有着不可替代的作用。
今天我们就来一次全方位的元组拆解,让你彻底搞懂它的用法与应用场景。

() 或内置函数 tuple() 创建。示例:
# 创建元组
t1 = (1, 2, 3)
t2 = ("Python", True, 3.14)
t3 = tuple([1, 2, 3]) # 由列表转换特性 | 元组(tuple) | 列表(list) |
|---|---|---|
可变性 | ❌ 不可变 | ✅ 可变 |
性能 | ✅ 更快(内存小) | ❌ 相对较慢 |
适用场景 | 不希望被修改的数据 | 需要频繁修改的数据 |
语义表达 | 固定结构数据 | 动态数据集合 |
💡 记忆技巧 列表像“购物车”,随时可增减;元组像“收据”,一旦打印不可更改。
t = ("Python", "Java", "Go")
print(t[0]) # Python
print(t[-1]) # Goprint(t[0:2]) # ('Python', 'Java')lang1, lang2, lang3 = t
print(lang1, lang2, lang3) # Python Java Gonested = (1, (2, 3), (4, 5))
print(nested[1][1]) # 3x, y = (10, 20)a, b = 1, 2
a, b = b, acoords = {(10, 20): "位置A", (30, 40): "位置B"}
print(coords[(10, 20)])因为元组不可变,所以可以安全用作字典的键。
def get_point():
return (3, 4)
x, y = get_point()元组的不可变性指的是元组结构本身不能改,但如果元组里的元素是可变对象(如列表),那个对象依然可以被修改。
t = (1, [2, 3])
t[1].append(4) # 不会报错
print(t) # (1, [2, 3, 4])所以,元组是浅不可变。
import timeit
list_test = timeit.timeit(stmt="[1, 2, 3, 4, 5]", number=1000000)
tuple_test = timeit.timeit(stmt="(1, 2, 3, 4, 5)", number=1000000)
print("列表耗时:", list_test)
print("元组耗时:", tuple_test)💡 在多数情况下,元组的创建和访问速度会比列表更快。
TypeError。💬 你在项目中用元组最多的场景是哪里?评论区聊聊,让更多人少踩坑!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。