プログラミング言語の中でも比較的覚えやすい 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を使ったスクリプト。
一度きりの計算であれば手元で処理を実行すればよいが、もし定期的に処理を実行しようと思うと開発マシンとは別に実行環境を用意する必要がある。
クラウド環境を使う方法もあるが、安価な小型マシンを用意するとランニングコストが抑えられるので検討すると良いかも知れない。
あわせて読みたい