Python

Pythonでforループを抜けたりスキップする方法

Pythonでforループを特定の条件で止めたいんだけど、どうしたらいいんだっけ・・・

プログラミング言語の中でも比較的覚えやすい Python

他の言語と同じようにPythonでも繰り返し(ループ)処理が定義できる。

ループは無限ループでなければ指定の回数、もしくはリストを一通り処理すれば終了する。

しかしループ中に目的を満たした場合はループを終了したいし、処理対象にしたくないデータがあった場合はループ中の処理は行わずに次のデータを処理したくなる。

ではそのような場合どうすればいいのか。

そこで今回はPythonでforループを抜けたりスキップする方法について紹介する。

この記事を書いている人


システムエンジニア、AIエンジニアと、IT業界で10年以上働いている中堅。PythonとSQLが得意。

記事を読むメリット

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したらどこが止まるの?
じゃあやってみますか


では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ループを抜けたりスキップする方法について紹介した。

ループを制御するには以下の方法が使える。

ループの制御機能

  • ループを抜ける:break
  • ループをスキップする:continue
  • ループの制御についても公式ドキュメントに記載があるので、詳しく知りたい場合はそちらを見てもいいかもしれない。



    今回のようなPythonを使ったスクリプト。

    一度きりの計算であれば手元で処理を実行すればよいが、もし定期的に処理を実行しようと思うと開発マシンとは別に実行環境を用意する必要がある。

    クラウド環境を使う方法もあるが、安価な小型マシンを用意するとランニングコストが抑えられるので検討すると良いかも知れない。

    ウチでは24時間稼働させてデータ取得などの提携作業をさせてます。音も小さいので便利ですよ。

    ITipsと同じようなブログを作る方法

    ブログに興味がありますか?

    もしブログに興味がある場合は↓このページ↓を参考にすれば、ITipsと同じ構成でブログを作ることができます

    サーバー、ドメイン、ASPと【ブログに必要なものは全て】このページに書きました。
    同じ構成でブログ作るのはいいけど、記事はマネしないでネ (TДT;)

    ランキング参加中

    にほんブログ村 IT技術ブログへ

    他にもブログやSNSで紹介してくれると励みになります。

    はてブのコメントで酷評されると泣きます(´;ω;`)

    -Python

    Translate »

    © 2021 ITips