Python元组遍历案例如何循环读取

wen python案例 21

本文目录导读:

Python元组遍历案例如何循环读取

  1. 基础遍历方法
  2. 实际应用案例
  3. 进阶遍历技巧
  4. 实用小技巧

我来介绍Python元组遍历的几种常见方法和案例。

基础遍历方法

直接遍历元素

# 基本元组
fruits = ('apple', 'banana', 'orange', 'grape')
# 直接遍历元素
for fruit in fruits:
    print(fruit)
# 输出: apple, banana, orange, grape

使用索引遍历

# 使用range和len
for i in range(len(fruits)):
    print(f"索引{i}: {fruits[i]}")
# 输出: 索引0: apple, 索引1: banana, ...
# 使用enumerate同时获取索引和值
for index, fruit in enumerate(fruits):
    print(f"位置{index}: {fruit}")

实际应用案例

案例1:学生成绩处理

# 存储学生姓名和成绩的元组列表
students = [
    ('张三', 85, '数学'),
    ('李四', 92, '英语'),
    ('王五', 78, '物理'),
    ('赵六', 95, '化学')
]
print("=== 学生成绩表 ===")
for student in students:
    name, score, subject = student  # 元组解包
    print(f"{name}的{subject}成绩: {score}")
# 使用enumerate添加序号
for i, (name, score, subject) in enumerate(students, 1):
    print(f"{i}. {name} - {subject}: {score}")

案例2:坐标数据处理

# 存储坐标点的元组
points = [
    (10.5, 20.3),
    (15.2, 25.7),
    (8.9, 30.1),
    (22.4, 18.6)
]
# 计算所有点到原点的距离
print("=== 坐标点距离计算 ===")
for x, y in points:
    distance = (x**2 + y**2) ** 0.5
    print(f"点({x}, {y}) 到原点距离: {distance:.2f}")
# 找最远点
max_distance = 0
farthest_point = None
for x, y in points:
    distance = (x**2 + y**2) ** 0.5
    if distance > max_distance:
        max_distance = distance
        farthest_point = (x, y)
print(f"最远点: {farthest_point}, 距离: {max_distance:.2f}")

案例3:字典键值对遍历

# 字典的items()返回元组
person = {
    'name': '小明',
    'age': 25,
    'city': '北京',
    'job': '工程师'
}
print("=== 个人信息 ===")
for key, value in person.items():
    print(f"{key}: {value}")
# 条件筛选
print("\n=== 重要信息 ===")
important_keys = ['name', 'job']
for key, value in person.items():
    if key in important_keys:
        print(f"【重要】{key}: {value}")

进阶遍历技巧

嵌套元组遍历

# 二维元组(矩阵)
matrix = (
    (1, 2, 3),
    (4, 5, 6),
    (7, 8, 9)
)
print("=== 矩阵遍历 ===")
for row in matrix:
    for element in row:
        print(element, end=' ')
    print()  # 换行
# 带行列索引
for i, row in enumerate(matrix):
    for j, value in enumerate(row):
        print(f"[{i}][{j}]={value}", end=' ')
    print()

条件筛选和变换

# 混合数据类型的元组
data = ('Python', 3.8, True, [1, 2, 3], ('a', 'b'), 42)
print("=== 数据分类 ===")
strings = []
numbers = []
others = []
for item in data:
    if isinstance(item, str):
        strings.append(item)
    elif isinstance(item, (int, float)):
        numbers.append(item)
    else:
        others.append(item)
print(f"字符串: {strings}")
print(f"数字: {numbers}")
print(f"其他: {others}")

列表推导式遍历元组

numbers = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
# 筛选偶数
even_numbers = [num for num in numbers if num % 2 == 0]
print(f"偶数: {even_numbers}")
# 变换元素
squared = [num ** 2 for num in numbers]
print(f"平方: {squared}")
# 组合条件
result = [f"{num}是质数" if num > 1 and all(num % i != 0 for i in range(2, int(num**0.5)+1)) 
          else f"{num}是合数" if num > 1 
          else f"{num}既不是质数也不是合数" 
          for num in numbers]
print(result)

实用小技巧

同时遍历多个元组

# 使用zip同时遍历多个元组
names = ('小明', '小红', '小华')
ages = (25, 23, 28)
scores = (90, 85, 95)
print("=== 多个元组合并遍历 ===")
for name, age, score in zip(names, ages, scores):
    print(f"{name}: 年龄{age}, 成绩{score}")
# 带索引
for i, (name, age) in enumerate(zip(names, ages)):
    print(f"{i+1}. {name}: {age}岁")

元组切片遍历

numbers = tuple(range(1, 11))  # (1, 2, 3, ..., 10)
# 每隔一个元素
print("奇数位置:", numbers[::2])  # (1, 3, 5, 7, 9)
print("偶数位置:", numbers[1::2])  # (2, 4, 6, 8, 10)
# 倒序遍历
print("倒序:", numbers[::-1])  # (10, 9, 8, ..., 1)
# 切片遍历
for num in numbers[3:8]:
    print(f"切片元素: {num}")  # 4, 5, 6, 7, 8
  1. 直接遍历:适合只需要元素本身
  2. enumerate遍历:需要索引和元素时使用
  3. 元组解包:处理结构化数据很方便
  4. zip函数:同时遍历多个元组
  5. 列表推导式:简洁的变换和筛选
  6. 嵌套遍历:处理多维数据

记住元组的不可变性,遍历过程中不能修改元素,但可以创建新结构。

抱歉,评论功能暂时关闭!