第 19 课 · 阶段三 · 数据结构

元组 Tuple

元组是“不能修改的列表”。这一课理解元组特性、解包赋值、以及多返回值背后的原理。

第 19 课阶段三 · 数据结构难度:入门建议时长:25 分钟关键词:元组 · 解包 · 不可变

🎯 学完本课你将掌握

  • 创建元组并理解其不可变性
  • 掌握元组解包与交换变量
  • 理解函数多返回值与元组的关系

一、创建元组

创建元组.py
1t1 = (1, 2, 3)
2t2 = ("a", "b")
3t3 = () # 空元组
4t4 = (5,) # 单个元素必须加逗号!
5print(t1, t2, t3, t4)
6print(type(t4)) # <class 'tuple'>
⚠️ 注意
只写 t = (5) 得到的是整数 5,不是元组;要写 (5,) 带一个逗号。这是新手常踩的坑。

二、元组不可修改

不可变演示.py
1t = (1, 2, 3)
2print(t[0]) # 1 可以访问
3# t[0] = 100 # 报错!TypeError: 'tuple' object does not support item assignment
✅ 要点
元组不可变,正因如此它更安全:数据不会被意外篡改,还能作为字典的键(列表不行)。

三、元组解包(超实用)

解包.py
1point = (10, 20)
2x, y = point # 解包:把元组拆给多个变量
3print(x, y) # 10 20
4
5a, b = 1, 2
6a, b = b, a # 经典交换变量,Python一行搞定
7print(a, b) # 2 1

四、函数返回多个值

函数 return 多个值,本质就是返回一个元组;接收时解包即可(第 23 课会深入)。

多返回值.py
1def calc(a, b):
2 return a + b, a - b, a * b # 返回元组
3
4s, d, m = calc(10, 4)
5print(s, d, m) # 14 6 40

五、元组 vs 列表怎么选

对比项列表 list元组 tuple
可变性可变,可增删改不可变
语法[1,2](1,2)
适用需要增删改的数据不可变常量、坐标、返回值
字典键不能当键能当键

六、常见错误与解决

常见错误与解决

错误现象原因 / 解决方法
TypeError: 'tuple' object does not support item assignment试图修改元组,元组不可变,需要可变就换列表。
忘了单元素逗号(5) 是整数,用 (5,) 才是元组。
解包数量不匹配ValueError: too many/not enough values to unpack,检查变量数与元组长度。
✍️ 小练习
创建一个包含三个城市名的元组,解包给三个变量并打印;再写一个函数返回两个数中较大值与较小值并解包接收。
📌 本节小结
元组是不可变的有序序列:访问同列表、但不能改;单元素要加逗号;解包能一行交换变量;多返回值本质是返回元组。