On this page

Python for 循环语句

Python for 循环语句详解

for 循环是 Python 中最常用的循环结构,用于遍历序列(如列表、元组、字符串等)或其他可迭代对象中的元素。

基本语法

for 变量 in 可迭代对象:
    # 循环体代码块

简单示例

# 遍历列表
fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
    print(fruit)

输出:

apple
banana
cherry

关键特点

  1. 自动迭代:无需手动管理索引
  2. 可迭代对象:适用于任何可迭代对象(列表、字符串、字典等)
  3. 简洁性:比 while 循环更简洁明了

常见应用场景

1. 遍历序列

# 遍历字符串
for char in "Python":
    print(char)

2. 遍历字典

person = {'name': 'Alice', 'age': 25, 'city': 'New York'}

# 遍历键
for key in person:
    print(key)

# 遍历键值对
for key, value in person.items():
    print(f"{key}: {value}")

3. 使用 range() 函数

# 打印0-4
for i in range(5):
    print(i)

# 指定起始和结束值
for i in range(2, 5):
    print(i)  # 输出2,3,4

# 指定步长
for i in range(0, 10, 2):
    print(i)  # 输出0,2,4,6,8

循环控制语句

1. break - 立即退出循环

for num in range(10):
    if num == 5:
        break
    print(num)  # 只打印0-4

2. continue - 跳过当前迭代

for num in range(10):
    if num % 2 == 0:
        continue  # 跳过偶数
    print(num)  # 只打印1,3,5,7,9

3. else 子句 - 循环正常结束时执行

for i in range(3):
    print(i)
else:
    print("循环正常结束")  # 没有被break中断时执行

高级用法

1. 嵌套循环

# 打印乘法表
for i in range(1, 10):
    for j in range(1, i+1):
        print(f"{j}x{i}={i*j}", end="\t")
    print()  # 换行

2. 列表推导式(简化for循环)

# 传统方式
squares = []
for x in range(10):
    squares.append(x**2)

# 列表推导式
squares = [x**2 for x in range(10)]

3. 使用 enumerate() 获取索引

fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits):
    print(f"索引 {index}: {fruit}")

4. 使用 zip() 并行迭代

names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]

for name, age in zip(names, ages):
    print(f"{name} is {age} years old")

for 循环 vs while 循环

特性for 循环while 循环
适用场景遍历已知序列条件不确定的循环
循环次数由序列长度决定由条件决定
初始化自动处理迭代变量需要在循环外初始化变量
典型用例遍历列表、固定次数循环用户输入验证、游戏循环

实际应用示例

1. 文件处理

# 读取文件内容
with open('data.txt', 'r') as file:
    for line in file:
        print(line.strip())  # 去除换行符

2. 数据处理

# 计算列表中数字的平均值
numbers = [10, 20, 30, 40, 50]
total = 0
for num in numbers:
    total += num
average = total / len(numbers)
print(f"平均值: {average}")

3. 生成模式

# 打印金字塔
n = 5
for i in range(1, n+1):
    print(' '*(n-i) + '*'*(2*i-1))

性能优化技巧

  1. 对于大数据集,考虑使用生成器表达式代替列表

    # 生成器表达式
    sum(x**2 for x in range(1000000))
    
  2. 避免在循环体内进行不必要的计算

  3. 使用内置函数(如 map(), filter())有时可以提高性能

常见错误

  1. 修改正在迭代的列表

    # 错误示例
    numbers = [1, 2, 3, 4]
    for num in numbers:
        if num % 2 == 0:
            numbers.remove(num)  # 这会引发问题
    

    解决方案:迭代副本或使用列表推导式

    # 正确方式
    numbers = [num for num in numbers if num % 2 != 0]
    
  2. 忘记缩进循环体

    for x in range(5):
    print(x)  # 缩进错误
    
  3. 混淆迭代元素和索引

    fruits = ['apple', 'banana']
    for i in range(len(fruits)):
        print(fruits[i])  # 可行但不Pythonic
           
    # 更Pythonic的方式
    for fruit in fruits:
        print(fruit)
    

总结

  • for 循环是遍历序列和可迭代对象的最佳选择
  • 可以配合 range(), enumerate(), zip() 等函数使用
  • 使用 breakcontinue 可以更灵活地控制循环流程
  • 列表推导式可以简化许多循环操作
  • 避免在循环中修改正在迭代的集合

掌握 for 循环是成为 Python 程序员的关键一步,它能使你的代码更加简洁和高效。