
【Python】2重ループや多重ループをbreakで抜ける方法
公開: 更新:Pythonの2重ループでbreakを使う方法
Pythonで2重ループを実行する際、内側のループだけを中断したい場合があります。この場合、単純に`break`文を使用すると内側のループのみが終了し、外側のループは継続して実行されます。特定の条件が満たされた時点で内側の処理を中断しながらも、外側のループでは残りの要素を処理できます。
for i in range(3):
print(f"外側ループ: i = {i}")
for j in range(5):
print(f" 内側ループ: j = {j}")
if j == 2:
print(" 内側ループをbreakします")
break
print("外側ループは継続します")
【実行結果】
外側ループ: i = 0
内側ループ: j = 0
内側ループ: j = 1
内側ループ: j = 2
内側ループをbreakします
外側ループは継続します
外側ループ: i = 1
内側ループ: j = 0
内側ループ: j = 1
内側ループ: j = 2
内側ループをbreakします
外側ループは継続します
外側ループ: i = 2
内側ループ: j = 0
内側ループ: j = 1
内側ループ: j = 2
内側ループをbreakします
外側ループは継続します
行番号 | 詳細説明 |
---|---|
1行目 | range(3)で0から2までの値でループを実行 |
2行目 | 現在の外側ループのインデックスを表示 |
3行目 | 内側のループをrange(5)で0から4までの値で実行 |
4行目 | 現在の内側ループのインデックスを表示 |
5行目 | jの値が2の場合に条件分岐 |
6行目 | 内側ループを中断することを示すメッセージを表示 |
7行目 | 内側ループからbreakで脱出 |
8行目 | 外側ループが継続していることを示すメッセージを表示 |
`break`文は最も内側のループ(現在実行中のループ)にのみ影響します。上記の例では`j == 2`の条件が満たされると内側のループが終了しますが、外側のループは通常通り`i`の値を増やして次の繰り返しに進みます。
【PR】『Python』を学べる企業・個人向けのプログラミングコース
外側の2重ループをbreakする方法
外側のループも含めて2重ループを完全に抜け出したい場合は、フラグ変数を使用するアプローチが効果的です。フラグ変数を設定して内側のループで特定条件が満たされた場合にフラグを変更し、外側のループでそのフラグをチェックすることによって2重ループ全体を終了できます。
found = False # フラグ変数
for i in range(3):
print(f"外側ループ: i = {i}")
for j in range(5):
print(f" 内側ループ: j = {j}")
if i == 1 and j == 2:
print(" 目的の値が見つかりました")
found = True # フラグをTrueに設定
break # 内側のループを抜ける
if found:
print("外側のループも抜けます")
break # 外側のループを抜ける
print("外側ループは継続します")
【実行結果】
外側ループ: i = 0
内側ループ: j = 0
内側ループ: j = 1
内側ループ: j = 2
内側ループ: j = 3
内側ループ: j = 4
外側ループは継続します
外側ループ: i = 1
内側ループ: j = 0
内側ループ: j = 1
内側ループ: j = 2
目的の値が見つかりました
外側のループも抜けます
行番号 | 詳細説明 |
---|---|
1行目 | フラグ変数foundをFalseで初期化 |
2行目 | range(3)で0から2までの値でループを実行 |
3行目 | 現在の外側ループのインデックスを表示 |
4行目 | 内側のループをrange(5)で0から4までの値で実行 |
5行目 | 現在の内側ループのインデックスを表示 |
6行目 | iが1かつjが2の場合に条件分岐 |
7行目 | 条件満足時のメッセージを表示 |
8行目 | フラグ変数をTrueに変更 |
9行目 | 内側ループからbreakで脱出 |
10行目 | フラグ変数がTrueの場合に条件分岐 |
11行目 | 外側ループを抜けることを示すメッセージを表示 |
12行目 | 外側ループからbreakで脱出 |
13行目 | フラグがFalseの場合に外側ループが継続することを示すメッセージを表示 |
フラグ変数を使った方法では、まず`found`などのブール型変数を`False`で初期化してから、内側のループで条件が満たされた時点で`True`に変更します。その後、内側のループを`break`で抜けた直後に外側のループでフラグ変数をチェックし、条件に応じて外側のループも`break`します。
多重ループからbreakで脱出する方法
Pythonでは関数を使用することによって、3重以上の複雑な多重ループからも簡単に脱出できます。関数内で必要な条件が満たされた場合に`return`文を使用すると、すべてのループをただちに終了できるためコードの可読性が向上します。
def search_matrix():
for i in range(3):
print(f"外側ループ: i = {i}")
for j in range(3):
print(f" 中間ループ: j = {j}")
for k in range(3):
print(f" 内側ループ: k = {k}")
if i == 1 and j == 1 and k == 1:
print(" 目的の値が見つかりました")
return "検索成功" # すべてのループから脱出
return "検索失敗" # 見つからなかった場合
result = search_matrix()
print(f"結果: {result}")
【実行結果】
外側ループ: i = 0
中間ループ: j = 0
内側ループ: k = 0
内側ループ: k = 1
内側ループ: k = 2
中間ループ: j = 1
内側ループ: k = 0
内側ループ: k = 1
内側ループ: k = 2
中間ループ: j = 2
内側ループ: k = 0
内側ループ: k = 1
内側ループ: k = 2
外側ループ: i = 1
中間ループ: j = 0
内側ループ: k = 0
内側ループ: k = 1
内側ループ: k = 2
中間ループ: j = 1
内側ループ: k = 0
内側ループ: k = 1
目的の値が見つかりました
結果: 検索成功
行番号 | 詳細説明 |
---|---|
1行目 | search_matrix関数を定義 |
2行目 | 外側のループをrange(3)で0から2までの値で実行 |
3行目 | 現在の外側ループのインデックスを表示 |
4行目 | 中間のループをrange(3)で0から2までの値で実行 |
5行目 | 現在の中間ループのインデックスを表示 |
6行目 | 内側のループをrange(3)で0から2までの値で実行 |
7行目 | 現在の内側ループのインデックスを表示 |
8行目 | i=1、j=1、k=1の場合に条件分岐 |
9行目 | 条件満足時のメッセージを表示 |
10行目 | 「検索成功」を返してすべてのループから脱出 |
11行目 | 条件を満たさずループが完了した場合に「検索失敗」を返す |
12行目 | search_matrix関数を呼び出して結果をresultに格納 |
13行目 | 関数の結果を表示 |
関数を使用した方法の大きな利点は、`return`文によってどの深さのループからでも即座に脱出できることです。上記の例では3重ループを使用していますが、条件`i == 1 and j == 1 and k == 1`が満たされた時点で`return`文が実行され、すべてのループ処理が終了します。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
- 【Python】画像認識で個数カウントをする方法
- 【Python】在庫管理システムを自作する方法
- 【Python】ChatGPTでコード生成をするプロンプトの作り方
- 【Python】pipenvでバージョン変更を行う方法
- Pythonを使ったAndroidアプリの作り方(開発方法)