Python数据类型 - 元组(Tuple)
1. 元组简介
元组是Python中的不可变序列,用于存储一组有序的元素。特点:
- 用圆括号
()
定义,元素间用逗号分隔 - 一旦创建,内容不可修改(但可以整体重新赋值)
- 支持索引和切片操作
- 可以包含任意数据类型
2. 创建元组
# 空元组
empty_tuple = ()
# 单元素元组(注意末尾的逗号)
single_tuple = (42,)
# 多元素元组
colors = ('red', 'green', 'blue')
mixed = (1, 'hello', 3.14, True)
# 省略括号(自动转换为元组)
numbers = 1, 2, 3
3. 基本操作
访问元素
t = ('a', 'b', 'c', 'd')
print(t[0]) # 'a'(正向索引,从0开始)
print(t[-1]) # 'd'(负向索引,-1表示最后一个)
切片操作
print(t[1:3]) # ('b', 'c')
print(t[:2]) # ('a', 'b')
print(t[::2]) # ('a', 'c')(步长为2)
元组解包
point = (10, 20)
x, y = point # x=10, y=20
# 交换变量
a, b = b, a
4. 不可变性
元组创建后不能修改内容,尝试修改会报错:
t = (1, 2, 3)
t[0] = 5 # 报错:TypeError
但若元素本身是可变对象(如列表),其内容可以改变:
t = ([1, 2], [3, 4])
t[0].append(3) # 允许,元组变为([1, 2, 3], [3, 4])
5. 常用方法
由于不可变,元组方法较少:
方法 | 描述 |
---|---|
count(x) | 返回元素x出现的次数 |
index(x) | 返回元素x第一次出现的索引 |
t = (1, 2, 2, 3)
print(t.count(2)) # 2
print(t.index(3)) # 3
6. 元组 vs 列表
特性 | 元组 | 列表 |
---|---|---|
可变性 | 不可变 | 可变 |
语法 | () | [] |
性能 | 更快 | 稍慢 |
用途 | 固定数据 | 动态数据 |
方法 | 少 | 多 |
7. 应用场景
- 存储不应被修改的数据
- 字典的键(因为不可变)
- 函数返回多个值时(本质是返回元组)
- 提高程序性能(比列表更高效)
8. 高级技巧
命名元组
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(11, y=22)
print(p.x, p.y) # 11 22
元组拼接
t1 = (1, 2)
t2 = (3, 4)
combined = t1 + t2 # (1, 2, 3, 4)
乘法运算
triple = t1 * 3 # (1, 2, 1, 2, 1, 2)