

プログラミング言語の中でも比較的覚えやすい Python。
他の言語と同じようにPythonでも繰り返し(ループ)処理が定義できる。
ループは無限ループでなければ指定の回数、もしくはリストを一通り処理すれば終了する。
しかしループ中に目的を満たした場合はループを終了したいし、処理対象にしたくないデータがあった場合はループ中の処理は行わずに次のデータを処理したくなる。
ではそのような場合どうすればいいのか。
そこで今回はPythonでforループを抜けたりスキップする方法について紹介する。
この記事を書いている人

記事を読むメリット
Pythonでforループを抜けたりスキップする方法がわかり、効率的に短い時間でプログラムを動作させられるようになる。
Pythonのforループ

まずはPythonのforループを書いてみる。
# normal loop
for i in range(0,3):
print("i:{}".format(i))
for j in range(0, 2):
print(" j:{}".format(j))
# i:0
# j:0
# j:1
# i:1
# j:0
# j:1
# i:2
# j:0
# j:1
今回は2重ループにしている。
他の書き方もあるので公式ドキュメントを参考にすると色々なループを書くことができる。


Pythonでforループを抜ける方法

Pythonでforループを抜ける方法、それは break を使えばできる。
break を使うと以下のようなコードになる。
# break loop1
for i in range(0,3):
print("i:{}".format(i))
if i == 1:
print("break")
break
for j in range(0, 2):
print(" j:{}".format(j))
# i:0
# j:0
# j:1
# i:1
# break
先程のコードでは i=2 までループが実行されていたが、ここでは i=1 の段階で break を発生させてループを終了させている。


では2重ループで break したらどうなるのか。
実際にやってみると以下のような結果になる。
# break loop2
for i in range(0,3):
print("i:{}".format(i))
for j in range(0, 2):
print(" j:{}".format(j))
if j == 0:
print("break")
break
# i:0
# j:0
# break
# i:1
# j:0
# break
# i:2
# j:0
# break
今度はiのループではなく、jのループに break を仕掛けたところ、 j=0 でjのループが終了し、親であるiのループは継続しているのがわかる。
なので break で抜けるのは直近のループのみということがわかる。
Pythonでforループのイテレーションをスキップする方法

ではPythonでforループのイテレーションをスキップするにはどうしたらいいのか。
それは continue を使えば解決できる。
# skip loop
for i in range(0,3):
print("i:{}".format(i))
if i == 1:
print("continue")
continue
for j in range(0, 2):
print(" j:{}".format(j))
# i:0
# j:0
# j:1
# i:1
# continue
# i:2
# j:0
# j:1
このように continue を使うと、 i=1 のイテレーションでの処理はスキップされたが、ループ自体は解除されずに i=2 のイテレーションが実行される。
このように continue を使うと、特定の条件のみループをスキップさせることができる。
まとめ

今回はPythonでforループを抜けたりスキップする方法について紹介した。
ループを制御するには以下の方法が使える。
ループの制御機能
ループの制御についても公式ドキュメントに記載があるので、詳しく知りたい場合はそちらを見てもいいかもしれない。
今回のようなPythonを使ったスクリプト。
一度きりの計算であれば手元で処理を実行すればよいが、もし定期的に処理を実行しようと思うと開発マシンとは別に実行環境を用意する必要がある。
クラウド環境を使う方法もあるが、安価な小型マシンを用意するとランニングコストが抑えられるので検討すると良いかも知れない。

あわせて読みたい



