continue文で処理をスキップする

continue文で処理をスキップする

Pythonのループ処理において、特定の条件を満たしたときにその反復処理(イテレーション)の残りをスキップし、次の反復に進むための構文としてcontinue文があります。continue文を適切に使うことで、コードの可読性や保守性を向上させつつ、無駄な処理を避けることが可能です。本記事では、初心者向けにcontinue文の基本的な使い方から、他の制御構文との使い分けのポイントまでを解説します。

continue文とは?

continue文は、ループ(for文やwhile文)の中で使われる制御構文の一種です。ループ中にある特定の条件を満たしたときに「それ以上の処理を行わず、次の反復に移る」ために利用します。これによって、不要な計算や処理を飛ばしつつ、ループ全体は停止させず継続することができます。

たとえば「奇数だけを処理したい」「特定の値が現れた場合には処理を飛ばしたい」といったケースで活躍します。同様にループの流れを制御する構文としては、特定の条件でループ自体を終了させるbreak文もあります。break文と対比すると、continue文は「反復単位のスキップ」、break文は「ループそのものの終了」という違いがある点が大きな特徴です。

continueを使った基本的な例

まずは簡単な例として、1から10までの数字を順に処理しながら、「偶数はスキップし、奇数だけを表示する」コードを考えてみましょう。


for i in range(1, 11):
    if i % 2 == 0:
        continue
    print(i)

上記のコードでは、i % 2 == 0(iが2で割り切れる場合)にcontinue文が実行されます。すると、その反復中の残り処理(print(i)の実行)はスキップされ、次の数字へと処理が進みます。その結果、コンソールには偶数が表示されず、1, 3, 5, 7, 9のみが表示されます。もし逆に偶数だけを表示したい場合には条件を変えて、i % 2 != 0のときにcontinueさせればよいでしょう。

breakとの違い

ループ制御構文には、continueの他にbreak文があります。break文は特定の条件を満たしたらループ自体を完全に終了させる構文です。以下は、同じループ内でcontinueとbreakを使い分けるイメージを示す例です。10までの数字をループしつつ、5の時点で残りの処理を飛ばして、8の時点でループ自体を終了させるとします。


for i in range(1, 11):
    if i == 5:
        print("5はスキップします")
        continue
    if i == 8:
        print("8でループを終了します")
        break
    print(i)

この結果は以下のようになります。

  • 1, 2, 3, 4 を順に表示
  • i = 5 のとき、print("5はスキップします")を表示して、continueでその後のprint(i)を実行せずに次の反復へ
  • 6, 7 を表示
  • i = 8 のとき、print("8でループを終了します")を表示後、breakでループが完全に終了

つまり、continueは1つのイテレーション単位で処理を飛ばしてループを“スキップ”し、breakはループそのものを“脱出”する働きを持ちます。

while文でのcontinue

continueはwhile文でも同様に使えます。例えば、while文を使って1から10までをカウントアップし、偶数だけをスキップするコードは以下の通りです。


n = 0
while n  10:
    n += 1
    if n % 2 == 0:
        continue
    print(n)

while文の場合も、n % 2 == 0の時点でcontinueが呼び出され、その反復の後処理(今回は特にprint(n))はスキップされます。そして次の反復、つまり再びwhile n < 10:の判定に戻ります。

実務での活用例

実際の開発やスクリプトを書く場面では、以下のようなケースでcontinueが多用されます。

  • ログやファイルを順に処理しながら、異常な形式のデータ(パースエラーなど)が出てきたら、その1行だけをスキップし続ける
  • 膨大なデータの中から、特定の条件を満たさないデータは読み飛ばし、必要なデータだけを処理する
  • Webスクレイピングで目的の情報に合致しないHTML要素を一部スキップして、合致する要素だけ詳しく処理する

continueを使うことで、強制的に「その場で処理を打ち切り、次のステップへ進む」制御が可能になります。こうしたパターンでは、一旦蓄積した例外や除外リストをチェックして、該当する場合にスキップする、などの実装がしやすくなります。

注意点・ベストプラクティス

便利なcontinue文ですが、濫用するとコードが複雑化しやすくなります。特に、深いネスト(入れ子)構造の中でcontinue文が多用されると、フローを追いかけるのが難しくなりがちです。以下の点を意識するとよいでしょう。

  • 複数の条件分岐の中でcontinueを多用する場合、条件式を工夫して早期リターン(ifの逆条件をまとめるなど)できないか検討する
  • ネストが深くなると可読性が下がるため、可能であれば関数化・メソッド化し、早めにreturnしたり例外処理を使うなど別のアプローチを考える
  • ループの中で状態を変更しながら条件分岐する際は、次の反復に移る前に変数が想定通りの値になっているか注意する

つまり、continue自体はシンプルで強力な制御文ですが、その使い所に注意し、可読性やロジックの整理を怠らないようにするのが、保守性の高いコードを書くコツです。

まとめ

本記事では、Pythonにおけるcontinue文の使い方と、break文との違いや実務での活用例について解説しました。continue文を使うと、特定の条件を満たした場合に限り「そのイテレーションの残り処理をスキップし、ループを継続」できます。こうした制御は、以下のメリットをもたらします。

  • 不要な処理を飛ばし、効率よくループを回せる
  • 条件ごとに複雑なif文のネストを書くよりも、フローを分かりやすく整理できる
  • エラーや例外的なデータを一部だけスキップして、処理全体を止めずに実行できる

一方で、コードが複雑になる要因にもなり得るため、使うときはソースコードの可読性を保つ工夫が大切です。for文やwhile文の基本構造を押さえつつ、continueとbreakをうまく使い分けることで、初心者の方でもより柔軟かつ効率的な処理が書けるようになるでしょう。

今後、ループ内の制御フローを見直す機会があれば、ぜひcontinue文の活用を検討してみてください。ちょっとしたテクニックですが、慣れるとストレスなく使いこなせるようになります。引き続き、break文や関数化なども視野に入れて、制御構文をマスターしていきましょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です