在学习完列表(list)之后,你会发现 Python 中的序列类型非常灵活。但除了可变的列表,还有一种不可变的序列类型——元组(tuple)。 元组在数据处理、函数返回值、解包操作等场景中都非常常见,是 Python 程序员必须掌握的基础结构之一。
一 什么是元组(tuple)
元组(Tuple)是一个有序、不可变的序列类型。 它与列表类似,也可以存放多个不同类型的元素,但一旦创建,内容就不能被修改。
创建元组使用小括号 (),元素之间用逗号分隔:
1t = (1, 2, 3) 2print(t) 3
输出:
1(1, 2, 3) 2
你可以把元组看作是“不可修改的列表”。
二 元组的创建方式
1. 使用小括号创建
1t1 = (1, 2, 3) 2
2. 不加括号,直接用逗号分隔
1t2 = 1, 2, 3 2print(t2) # (1, 2, 3) 3
Python 会自动将多个逗号分隔的值识别为一个元组。
3. 单元素元组的特殊写法
如果只有一个元素,需要加上逗号,否则不会被识别为元组。
1t3 = (5,) # 正确写法 2t4 = (5) # 错误,这只是一个整数 3print(type(t3)) # <class 'tuple'> 4print(type(t4)) # <class 'int'> 5
4. 使用 tuple() 函数创建
1t5 = tuple([1, 2, 3]) 2print(t5) # (1, 2, 3) 3
三 元组的访问与切片
元组的访问方式与列表完全一致。
1t = ('apple', 'banana', 'cherry') 2print(t[0]) # apple 3print(t[-1]) # cherry 4print(t[0:2]) # ('apple', 'banana') 5
四 元组的不可变性
元组的最大特点就是不可变,意味着你不能对其进行修改、添加或删除操作。
1t = (1, 2, 3) 2t[0] = 99 # ❌ 报错 3
报错信息:
1TypeError: 'tuple' object does not support item assignment 2
虽然元组本身不可变,但如果元组中包含可变对象(比如列表),列表的内容是可以改变的。
1t = (1, [2, 3], 4) 2t[1].append(5) 3print(t) # (1, [2, 3, 5], 4) 4
这说明:元组的引用不可变,但引用的对象本身可以变。
五 元组的常用操作
1. 拼接与重复
1a = (1, 2) 2b = (3, 4) 3print(a + b) # (1, 2, 3, 4) 4print(a * 3) # (1, 2, 1, 2, 1, 2) 5
2. 成员判断
1t = (10, 20, 30) 2print(20 in t) # True 3print(100 not in t) # True 4
3. 遍历元组
1for item in ('A', 'B', 'C'): 2 print(item) 3
4. 获取长度与最大最小值
1t = (5, 3, 8, 1) 2print(len(t)) # 4 3print(max(t)) # 8 4print(min(t)) # 1 5
六 元组的解包(Unpacking)
Python 支持对元组进行“解包”操作,即一次性将元组的多个值赋给多个变量。
1person = ('Alice', 25, 'Developer') 2name, age, job = person 3print(name) # Alice 4print(age) # 25 5print(job) # Developer 6
还可以使用星号 * 接收不确定数量的元素:
1a, *b = (1, 2, 3, 4, 5) 2print(a) # 1 3print(b) # [2, 3, 4, 5] 4
七 元组的应用场景
1. 函数返回多个值
1def get_user_info(): 2 return "Tom", 28, "Engineer" 3 4name, age, job = get_user_info() 5print(name, age, job) 6
2. 作为字典的键
由于元组是不可变的,因此可以作为字典的键使用,而列表不行。
1pos = {(0, 0): 'A', (1, 1): 'B'} 2print(pos[(0, 0)]) # A 3
3. 固定结构的数据存储
当数据在逻辑上不会被修改时,用元组更安全也更高效,比如坐标点 (x, y)、RGB 颜色 (r, g, b) 等。
八 小结
| 特性 | 列表(list) | 元组(tuple) |
|---|---|---|
| 是否可变 | ✅ 可变 | ❌ 不可变 |
| 语法符号 | [] | () |
| 典型用途 | 需要修改的数据集合 | 固定结构的数据 |
| 可作为字典键 | ❌ 否 | ✅ 是 |
九 实战示例:学生信息表
1students = [ 2 ('Tom', 20, 'A'), 3 ('Lucy', 19, 'B'), 4 ('Jack', 21, 'A') 5] 6 7for name, age, grade in students: 8 print(f"{name} 的年龄是 {age},成绩等级为 {grade}") 9
输出:
1Tom 的年龄是 20,成绩等级为 A 2Lucy 的年龄是 19,成绩等级为 B 3Jack 的年龄是 21,成绩等级为 A 4
通过元组存储固定结构的数据,使代码结构清晰且高效。
✅ 总结
- 元组是有序、不可变的序列类型。
- 用小括号
()或逗号创建,单元素元组必须加逗号。 - 支持索引、切片、拼接、遍历等操作。
- 不可变性让元组更安全,也能作为字典键。
- 常用于函数多值返回、数据打包与解包、固定结构存储等场景。
《Python编程实战 · 基础入门篇 | 元组(tuple)》 是转载文章,点击查看原文。