第 19 课 · 阶段三 · 数据结构
元组 Tuple
元组是“不能修改的列表”。这一课理解元组特性、解包赋值、以及多返回值背后的原理。
🎯 学完本课你将掌握
- 创建元组并理解其不可变性
- 掌握元组解包与交换变量
- 理解函数多返回值与元组的关系
一、创建元组
创建元组.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 2045a, b = 1, 26a, b = b, a # 经典交换变量,Python一行搞定7print(a, b) # 2 1四、函数返回多个值
函数 return 多个值,本质就是返回一个元组;接收时解包即可(第 23 课会深入)。
多返回值.py
1def calc(a, b):2 return a + b, a - b, a * b # 返回元组34s, 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,检查变量数与元组长度。 |
✍️ 小练习
创建一个包含三个城市名的元组,解包给三个变量并打印;再写一个函数返回两个数中较大值与较小值并解包接收。
📌 本节小结
元组是不可变的有序序列:访问同列表、但不能改;单元素要加逗号;解包能一行交换变量;多返回值本质是返回元组。