今回は、Pythonにおける多重ループからbreakで抜け出す方法を解説します。
for文の中にfor文があるような構造でのbreakの活用方法を一緒に学習していきましょう。
多重ループとは
多重ループとは何でしょうか?
すでにご存知の方もおられるかと思いますが一応軽く触れておきます。
多重ループとは、ループ文の処理の中に別のループがあるような状態のループ文のことを意味します。
以下のようなケースです。
test_list1 = [1, 2, 3]
test_list2 = [4, 5, 6]
for i in test_list1:
for j in test_list2:
print(i, j)
# 1 4
# 1 5
# 1 6
# 2 4
# 2 5
# 2 6
# 3 4
# 3 5
# 3 6
breakを使用した場合
for文などのループ処理を終了させるには「break」を用いる方法があります。
ただ、多重ループの場合では内側のループで「break」をした場合、内側のループから抜け出すだけで外側のループ処理は継続して行われます。
例は以下です。
test_list1 = [1, 2, 3]
test_list2 = [4, 5, 6]
for i in test_list1:
for j in test_list2:
if i == 2 and j == 6 :
print('BREAK')
break
print(i, j)
# 1 4
# 1 5
# 1 6
# 2 4
# 2 5
# BREAK
# 3 4
# 3 5
# 3 6
次項で多重ループから抜け出す方法を解説します。
多重ループから抜け出す方法
単純にbreakを用いるだけでは内側のループから抜け出すのみで、多重ループそのものを終了させることはできません。
多重ループを終了し抜け出すためには、「break」の他に「else」と「continue」を用いる必要があります。
例は以下です。
test_list1 = [1, 2, 3]
test_list2 = [4, 5, 6]
for i in test_list1:
for j in test_list2:
if i == 2 and j == 5 :
print('BREAK')
break
print(i, j)
else:
continue
break
# 1 4
# 1 5
# 1 6
# 2 4
# BREAK
こちらのコードの内容を解説します。
内側のループ処理が「break」ではなく通常に終了した場合は、「else」の分岐内にある「continue」が実行されます。
こちらの「continue」は外側のループに対しての処理となり、その後の処理である「break」の処理を行わずに次のループ処理に入ります。
対して、内側のループ処理が「break」で終了した場合、「else」の分岐に入らないため「continue」が実行されません。これにより外側のループ処理の「break」が実行され、外側のループも終了します。
つまり、内側のループ処理が「break」で終了すると外側のループ処理も「break」で終了する流れを作ることができています。
これで多重ループから抜け出し、処理を終了することができるようになっています。
おわりに
今回は、Pythonにおける多重ループからbreakで抜け出す方法を解説させていただきました。
ループ文を終了させるときには「break」をよく使いますが、ネストが深くなっている多重ループではこれだけでは意図したように処理を終了させることができません。
「else」や「continue」をうまく組み合わせた多重ループの処理を終了させる方法をこの機会に習得しておきましょう。
当ブログではプログラミング学習に関する記事を執筆しております。Pythonに関連した記事もいくつか用意しておりますのでよければ合わせてご覧ください。
最後まで読んでくださりありがとうございました。
コメント