【Python】breakとcontinueの違いと使い分け

Pythonには、ループ処理を制御するための2つの重要な文、break文とcontinue文が用意sれています。

これらの文は、繰り返し処理を行う際に非常に便利であり、コードの効率性や可読性を向上させることができます。

本記事では、それぞれの基本的な使い方や違いなどを解説していきます。

目次から探す

break文とcontinue文の基本

Pythonプログラミングにおいて、ループ処理を制御するためにbreak文とcontinue文が用意されています。

これらの文は、forループやwhileループの中で使用され、ループの実行フローを変更することができます。

break文の概要

break文は、ループ処理の途中でループを終了させるために使用されます。

break文が実行されると、その時点でループが終了し、ループの後に続く処理に移ります。

以下に、break文を使用したサンプルコードを示します。


for i in range(10):
    if i == 5:
        break
    print(i)

このコードでは、forループで0から9までの数字を順番に表示していますが、iが5になった時点でbreak文が実行され、ループが終了します。

そのため、実行結果は以下のようになります。

0
1
2
3
4

continue文の概要

continue文は、ループ処理の途中で現在のループの残りの部分をスキップし、次のループに移るために使用されます。

continue文が実行されると、その時点で現在のループの残りの部分が実行されず、次のループの処理が開始されます。

以下に、continue文を使用したサンプルコードを示します。


for i in range(10):
    if i == 5:
        continue
    print(i)

このコードでは、forループで0から9までの数字を順番に表示していますが、iが5になった時点でcontinue文が実行され、 print(i) がスキップされます。

そのため、実行結果は以下のようになります。

0
1
2
3
4
6
7
8
9

break文とcontinue文は、ループ処理を効果的に制御するための重要なツールです。

適切に使用することで、プログラムの可読性や効率を向上させることができます。

break文とcontinue文の違い

break文とcontinue文は、Pythonプログラミングにおいてループ処理を制御するための文です。

どちらも似たような機能を持っていますが、それぞれ異なる目的で使用されます。

この章では、break文とcontinue文の違いについて、ループの制御方法、使用シーン、コードの可読性と効率性の観点から解説します。

ループの制御方法の違い

break文とcontinue文の主な違いは、ループの制御方法です。

  • break文:ループを完全に終了し、ループの外側にある次の処理に移ります。
  • continue文:ループの現在の繰り返しをスキップし、次の繰り返しに移ります。

以下に、それぞれの使用例を示します。


# break文の使用例
for i in range(10):
    if i == 5:
        break
    print(i)
# 出力結果: 0 1 2 3 4

# continue文の使用例
for i in range(10):
    if i == 5:
        continue
    print(i)
# 出力結果: 0 1 2 3 4 6 7 8 9

使用シーンの違い

break文とcontinue文は、それぞれ異なるシーンで使用されます。

  • break文:特定の条件を満たした時点でループを終了させたい場合に使用します。

例えば、リスト内の要素を検索して、目的の要素が見つかったらループを終了させる場合などです。

  • continue文:特定の条件を満たす要素に対して処理をスキップし、残りの要素に対して処理を続けたい場合に使用します。

例えば、リスト内の要素に対して処理を行う際に、特定の要素だけ処理をスキップして残りの要素に対して処理を行いたい場合などです。

break文とcontinue文の応用例

break文とcontinue文は、ループ処理の中でより柔軟な制御を行うために使用されます。

ここでは、それらを応用した具体的な例を紹介します。

複数の条件を満たす要素を探す

リストや辞書などのデータ構造の中から、複数の条件を満たす要素を探す際に、break文とcontinue文を組み合わせて使用することができます。

例えば、以下のようなリストがあるとします。


data = [3, 7, 12, 19, 25, 30, 45, 50]

このリストから、3で割り切れるかつ5で割り切れる最初の要素を探すプログラムを作成する場合、以下のように書くことができます。


for num in data:
    if num % 3 == 0:
        if num % 5 == 0:
            print(f"条件を満たす要素: {num}")
            break
    else:
        continue

このコードでは、num % 3 == 0num % 5 == 0の2つの条件を満たす要素を見つけたら、break文でループを終了します。

また、num % 3 == 0を満たさない要素については、continue文で次の要素にスキップします。

特定の条件を満たす要素をスキップする

リストや辞書などのデータ構造を処理する際に、特定の条件を満たす要素をスキップして処理を行いたい場合があります。

このような場合には、continue文を使用することができます。

例えば、以下のようなリストがあるとします。


data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

このリストから、3の倍数をスキップして、それ以外の要素を表示するプログラムを作成する場合、以下のように書くことができます。


for num in data:
    if num % 3 == 0:
        continue
    print(num)

このコードでは、num % 3 == 0を満たす要素については、continue文で次の要素にスキップし、それ以外の要素を表示しています。

ループの最適化

break文とcontinue文を適切に使用することで、ループ処理の効率を向上させることができます。

特に、大量のデータを処理する際には、不要な処理をスキップすることで、プログラムの実行時間を短縮することができます。

例えば、以下のようなリストがあるとします。


data = list(range(1, 10001))

このリストから、1000以上の最初の素数を探すプログラムを作成する場合、以下のように書くことができます。


import math
def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(math.sqrt(num)) + 1):
        if num % i == 0:
            return False
    return True

#初期値を1000にすればいいという野暮なことは言わない
data = list(range(1, 10001))

for num in data:
    if num < 1000:
        continue
    if is_prime(num):
        print(f"1000以上の最初の素数: {num}")
        break

このコードでは、continue文を使用して1000未満の要素をスキップし、1000以上の要素に対して素数判定を行っています。

また、素数が見つかったらbreak文でループを終了しています。

これにより、不要な処理を省くことができ、効率的なプログラムを実現しています。

目次から探す