杰瑞科技汇

Python中continue如何跳过本次循环?

continue 是一个在循环中非常有用的控制流语句,它的作用是立即终止当前次循环的剩余代码,并直接跳回到循环的开头,开始下一次循环

Python中continue如何跳过本次循环?-图1
(图片来源网络,侵删)

可以把它想象成在跑步比赛中,你跑完一圈后,决定放弃休息,直接开始下一圈的冲刺。


continue 的工作原理

当程序执行到 continue 语句时:

  1. 跳过continue 之后、循环体结束之前的所有代码都将被忽略。
  2. 继续:程序的控制流会立即跳转到循环的条件判断部分(对于 while 循环)或者迭代器部分(对于 for 循环)。
  3. 下一次循环:如果循环条件仍然满足(对于 while)或者还有更多元素可以迭代(对于 for),则开始执行下一次循环。

continuefor 循环中的示例

这是 continue 最常见的使用场景,假设我们想遍历一个数字列表,但只处理偶数,跳过所有奇数。

# 目标:打印列表中的所有偶数,跳过奇数
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print("开始处理列表...")
for number in numbers:
    # 1. 检查数字是否为奇数
    if number % 2 != 0:
        # 2. 如果是奇数,执行 continue
        print(f"发现奇数 {number},跳过处理。")
        continue  # 立即跳转到 for 循环的下一次迭代
    # 3. 这里的代码只在 number 是偶数时才会执行
    print(f"处理偶数: {number}")
print("\n列表处理完毕。")

输出结果:

Python中continue如何跳过本次循环?-图2
(图片来源网络,侵删)
开始处理列表...
发现奇数 1,跳过处理。
处理偶数: 2
发现奇数 3,跳过处理。
处理偶数: 4
发现奇数 5,跳过处理。
处理偶数: 6
发现奇数 7,跳过处理。
处理偶数: 8
发现奇数 9,跳过处理。
处理偶数: 10
列表处理完毕。

代码流程解析:

  • number 是 1 时,1 % 2 != 0True,执行 printcontinueprint(f"处理偶数: {number}") 这一行被跳过。
  • number 是 2 时,2 % 2 != 0Falseif 语句块不执行,程序继续执行到 print(f"处理偶数: {number}") 并打印结果。
  • 这个过程对列表中的每一个元素都重复进行。

continuewhile 循环中的示例

continuewhile 循环中的工作原理完全相同。

# 目标:从 0 打印到 4,但跳过数字 3
count = 0
print("开始 while 循环...")
while count < 5:
    if count == 3:
        print(f"计数器为 {count},跳过!")
        count += 1  # 重要!避免死循环
        continue    # 跳过本次循环剩余代码,直接回到 while count < 5 的判断
    print(f"当前计数: {count}")
    count += 1  # 正常递增
print("\nwhile 循环结束。")

输出结果:

开始 while循环...
当前计数: 0
当前计数: 1
当前计数: 2
计数器为 3,跳过!
当前计数: 4
while 循环结束。

⚠️ 重要提示:在 while 循环中使用 continue 时要格外小心!

Python中continue如何跳过本次循环?-图3
(图片来源网络,侵删)

在上面的例子中,if count == 3 的代码块里有一个 count += 1为什么这里必须有它?

  1. 如果没有 count += 1,当 count 变成 3 时,if 条件成立。
  2. 程序执行 continue,跳过了循环末尾的 count += 1
  3. 下一次循环开始时,count 的值仍然是 3。
  4. while count < 5 仍然为 True
  5. if count == 3 再次成立...
  6. 这将导致一个无限循环,因为 count 永远无法增加到 4 或 5。

在使用 while 循环和 continue 时,要确保你的循环变量(这里是 count)在 continue 被执行时,仍然有被正确更新的机会,以避免死循环。


continue vs. break

初学者很容易混淆 continuebreak,它们的作用截然不同。

特性 continue break
作用 跳过当前循环的剩余部分,继续下一次循环。 完全终止整个循环,循环不再继续执行。
循环行为 循环继续 循环终止
类比 跑步时,放弃休息,直接跑下一圈。 跑步时,放弃比赛,直接离开跑道。

示例对比:

# 使用 continue
print("--- 使用 continue ---")
for i in range(5):
    if i == 2:
        continue
    print(i)
# 输出: 0, 1, 3, 4 (2被跳过,但循环继续)
# 使用 break
print("\n--- 使用 break ---")
for i in range(5):
    if i == 2:
        break
    print(i)
# 输出: 0, 1 (当i为2时,循环被终止,3和4不会被打印)

continue 的实际应用场景

continue 通常用于以下情况:

  1. 数据过滤:在遍历数据集(如从文件读取的行、数据库查询结果)时,跳过不符合特定条件的项。

    # 过滤掉注释行(以 # 开头)和空行
    for line in file_lines:
        line = line.strip()
        if not line or line.startswith('#'):
            continue
        # 处理有效数据行...
        process(line)
  2. 提前结束迭代:当在循环中完成某个任务后,无需再执行后续代码,直接进入下一次迭代。

    for item in items:
        # 尝试处理一个项目
        if not process_item(item):
            # 如果处理失败,记录并跳过,尝试下一个
            log_error(item)
            continue
        # 只有处理成功时才会执行的代码
        save_success(item)
  3. 简化代码结构:使用 continue 可以将嵌套的 if-else 结构(特别是深层嵌套)转换为更扁平、更易读的结构,这被称为“卫语句”(Guard Clause)模式。

    不推荐(嵌套过深):

    for user in users:
        if user.is_active:
            if user.has_permission:
                # 真正的业务逻辑在这里
                perform_action(user)

    推荐(使用 continue,更清晰):

    for user in users:
        if not user.is_active:
            continue  # 如果不活跃,直接跳过
        if not user.has_permission:
            continue  # 如果没有权限,也直接跳过
        # 现在的代码逻辑更清晰,只处理符合条件的用户
        perform_action(user)
  • continue 用于跳过当前循环的剩余部分。
  • 它会立即将控制流返回到循环的开头,准备下一次迭代。
  • for 循环中,它会获取下一个元素。
  • while 循环中,它会重新判断循环条件。使用时要小心,确保不会导致无限循环。
  • continuebreak 的核心区别在于:continue 是“跳过本次”,break 是“终止整个循环”。
  • continue 是一个强大的工具,用于简化逻辑、过滤数据和提高代码可读性。
分享:
扫描分享到社交APP
上一篇
下一篇