一、访问元素(3种方法)
points = (10, 20, 30, 40, 50)
# 1. 正向索引(从0开始)
print(points[0]) # 10
# 2. 反向索引(从-1开始)
print(points[-1]) # 50
# 3. 切片访问 [start:end:step]
print(points[1:4]) # (20, 30, 40)
print(points[::2]) # (10, 30, 50) 每隔一个取一个
print(points[::-1]) # (50, 40, 30, 20, 10) 反转元组
二、嵌套元组操作
# 嵌套元组(二维结构)
matrix = ((1, 2, 3),
(4, 5, 6),
(7, 8, 9))
# 访问嵌套元素
print(matrix[1][2]) # 6 → 第二行第三列
# 遍历嵌套元组
for row in matrix:
for num in row:
print(num, end=' ')
print()
# 输出:
# 1 2 3
# 4 5 6
# 7 8 9
# 带索引遍历
for i, row in enumerate(matrix):
for j, num in enumerate(row):
print(f"matrix[{i}][{j}] = {num}")
三、不可变性实践
# 尝试修改元组(会报错)
try:
colors[0] = "yellow"
except TypeError as e:
print(f"错误:{e}") # 'tuple' object does not support item assignment
# 解决方案:转换为列表修改后再转回元组
colors_list = list(colors)
colors_list[0] = "yellow"
new_colors = tuple(colors_list)
print(new_colors) # ('yellow', 'green', 'blue')
# 元组中的可变元素
mixed = (1, [2, 3], 4)
mixed[1].append(5) # 可以修改元组中的列表
print(mixed) # (1, [2, 3, 5], 4)
四、元组操作要点总结
1. 创建关键:单元素元组必须加逗号 (element,)
2. 访问技巧:
o 使用负索引快速获取末尾元素 t[-1]
o 切片创建子元组 t[1:4]
3. 不可变性:
o 无法直接修改元素
o 可通过"转列表→修改→转元组"实现变更
4. 解包妙用:
o 多变量同时赋值 x, y, z = (1, 2, 3)
o 忽略不需要的值 _, name, dept, _ = emp
5. 嵌套处理:
o 二维元组模拟表格数据
o 使用双重循环遍历矩阵
6. 性能优势:
o 比列表更省内存
o 访问速度更快
