Python中的for循环

79 阅读4分钟

在 Python 中,for 循环是核心的迭代工具,用于遍历可迭代对象(如列表、字符串、字典、元组、集合、range 对象等),执行重复的代码逻辑。以下是 for 循环的完整用法和示例:

一、基本语法

python

运行

for 变量 in 可迭代对象:
    循环体代码(缩进)
# 循环结束后执行的代码(无缩进)
  • 变量:每次迭代从可迭代对象中取出的元素(自定义命名)。
  • 可迭代对象:可以逐个取出元素的对象(如列表、字符串、range 等)。
  • 缩进:Python 用缩进(4 个空格 / 1 个 Tab)区分循环体,必须严格遵守。

二、常见使用场景

1. 遍历列表 / 元组(最常用)

遍历列表 / 元组的每个元素:

python

运行

# 遍历列表
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
    print(f"我喜欢吃 {fruit}")

# 遍历元组
nums = (1, 2, 3)
for num in nums:
    print(num * 2)  # 输出:2 4 6

2. 遍历字符串(按字符)

字符串是字符的可迭代对象,逐个遍历字符:

python

运行

text = "Python"
for char in text:
    print(char.upper())  # 输出:P Y T H O N

3. 遍历字典

字典有 3 种遍历方式(键、值、键值对):

python

运行

person = {"name": "小明", "age": 18, "city": "北京"}

# 遍历键(默认)
for key in person:
    print(key)  # 输出:name age city

# 遍历值
for value in person.values():
    print(value)  # 输出:小明 18 北京

# 遍历键值对(用 items())
for key, value in person.items():
    print(f"{key}: {value}")  # 输出:name: 小明  age: 18  city: 北京

4. 用 range () 生成数字序列

range() 生成整数序列,常用于指定循环次数:

  • range(n):0 ~ n-1(如 range(3) → 0,1,2)
  • range(start, end):start ~ end-1(如 range(2,5) → 2,3,4)
  • range(start, end, step):步长 step(如 range(1,10,2) → 1,3,5,7,9)

python

运行

# 循环 5 次(0-4)
for i in range(5):
    print(i)  # 输出:0 1 2 3 4

# 1-10 的偶数
for i in range(2, 11, 2):
    print(i)  # 输出:2 4 6 8 10

# 倒序遍历(步长为负)
for i in range(10, 0, -2):
    print(i)  # 输出:10 8 6 4 2

5. 遍历列表的同时获取索引(enumerate ())

enumerate() 可返回索引 + 元素,解决 “需要下标” 的场景:

python

运行

fruits = ["苹果", "香蕉", "橙子"]
for index, fruit in enumerate(fruits):
    print(f"第 {index+1} 个水果是:{fruit}")
# 输出:
# 第 1 个水果是:苹果
# 第 2 个水果是:香蕉
# 第 3 个水果是:橙子

三、循环控制语句

1. break:终止整个循环

遇到 break 立即退出循环,不再执行后续迭代:

python

运行

nums = [1, 2, 3, 4, 5]
for num in nums:
    if num == 3:
        break  # 遇到3终止循环
    print(num)  # 输出:1 2

2. continue:跳过当前迭代

跳过本次循环剩余代码,直接进入下一次迭代:

python

运行

nums = [1, 2, 3, 4, 5]
for num in nums:
    if num == 3:
        continue  # 跳过3,直接下一次循环
    print(num)  # 输出:1 2 4 5

3. else:循环正常结束后执行

仅当循环没有被 break 终止时,才执行 else 块:

python

运行

nums = [1, 2, 3, 4, 5]
for num in nums:
    print(num)
else:
    print("循环正常结束!")  # 会执行

# 被break终止时,else不执行
for num in nums:
    if num == 3:
        break
    print(num)
else:
    print("循环正常结束!")  # 不执行

四、嵌套 for 循环

循环内部嵌套另一个循环,常用于多维数据(如二维列表、矩阵):

python

运行

# 打印九九乘法表(简化版)
for i in range(1, 10):
    for j in range(1, i+1):
        print(f"{j}×{i}={i*j}", end=" ")
    print()  # 换行

五、遍历可迭代对象的进阶技巧

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

用一行代码生成列表,比传统 for 循环更简洁高效:

python

运行

# 传统方式
nums = [1, 2, 3, 4]
new_nums = []
for num in nums:
    new_nums.append(num * 2)

# 列表推导式
new_nums = [num * 2 for num in nums]
print(new_nums)  # 输出:[2,4,6,8]

# 带条件的列表推导式
new_nums = [num * 2 for num in nums if num % 2 == 0]
print(new_nums)  # 输出:[4,8]

2. 遍历集合 / 生成器

python

运行

# 遍历集合(无序)
s = {1, 2, 3}
for num in s:
    print(num)

# 遍历生成器(节省内存)
gen = (x for x in range(3))  # 生成器表达式
for num in gen:
    print(num)  # 输出:0 1 2

六、注意事项

  1. 迭代过程中修改可迭代对象(如列表)可能导致异常,建议先复制:

    python

    运行

    nums = [1, 2, 3]
    # 错误:遍历中删除元素,导致漏遍历
    # for num in nums:
    #     nums.remove(num)
    
    # 正确:遍历副本
    for num in nums.copy():
        nums.remove(num)
    print(nums)  # 输出:[]
    
  2. for 循环不能直接修改迭代变量来改变原可迭代对象(如列表元素),需通过索引:

    python

    运行

    nums = [1, 2, 3]
    # 错误:仅修改变量,原列表不变
    for num in nums:
        num = num * 2
    
    # 正确:通过索引修改
    for i in range(len(nums)):
        nums[i] = nums[i] * 2
    print(nums)  # 输出:[2,4,6]
    

总结

Python 的 for 循环是灵活的迭代工具,核心是 “遍历可迭代对象”,结合 break/continue/else、嵌套循环、列表推导式等,可满足绝大多数循环场景。重点掌握:

  • 遍历不同类型的可迭代对象(列表、字典、range 等);
  • 循环控制语句的使用;
  • 列表推导式简化循环代码;
  • 迭代时避免修改原可迭代对象的坑。