Pythonのcontinueとは?
Pythonのcontinue(continue文)は、ループ内の現在の反復処理をスキップして次の反復処理に進むための制御文です。
continue文の特徴は、同じく処理の中断(スキップ)で使われるbreak文と比べることでイメージしやすくなります。まず、breakの特徴は、特定条件に該当した場合に処理をスキップして「ループ自体を抜ける」ことです。これに対してcontinueでは、ループ内で特定条件に該当したときのみ反復処理をスキップして、「元のループ文の先頭に戻ること」になります。それはつまり、continueを使った場合、特定の要素を無視しながら残りの要素に対する処理を続行できるということです。
例えば、リスト内の数値を処理する際に、負の値だけをスキップして正の値のみを処理すると仮定します。このときにif-elseの複雑な条件分岐を書く代わりに、スキップすべき条件をcontinueで指定すると、反復処理を簡潔に実装することが可能です。continueを使うとコードの可読性が向上し、論理構造がより明確にもなるでしょう。
continueは、if文などの条件分岐と組み合わせて使用するのが一般的です。
条件を満たした場合にcontinueを実行し、現在の反復処理をスキップして次の要素の処理に進みます。continueを使うと、不要なデータや異常値を含むデータセットの処理が容易になります。データクレンジングやフィルタリング処理をする際に、特に有効です。また、Pythonの場合、ネスト(入れ子)されたループでcontinueを使用した場合も、breakと同様に最も内側のループで行われている現在の反復のみがスキップされます。この特徴を理解すると、複雑なデータ構造の選択的処理も効率的に行えるでしょう。
【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング
基本構文
Pythonにおけるcontinueの基本構文は、とてもシンプルです。ループ内の任意の位置に「continue」というキーワードを配置するだけになります。以下のように条件分岐と組み合わせるのが一般的な使い方です。
実用例
このセクションでは、動物を例にしたわかりやすいコードパターンと出力結果を確認しながら、さまざまな状況で実装できるcontinue文の使い方を紹介しましょう。
これから示す活用例は、実際のプロジェクトでもよく使うものです。またcontinue文は、Pythonのなかでも特に重要な制御構造であるため、基本~応用までを早めに身につけることが大切になります。
continue文の理解を深めるうえで重要となるのは、コードパターンを自分のプログラムに実装してみる「経験」です。実際のコードに触れ、「エラーが出る」や「うまく動かない」といったジレンマのなかで試行錯誤を続けると、適材適所の使い方を見出す思考力や問題解決力なども次第に身についてきます。
コードパターンのなかに自分の使用目的にマッチするものがあれば、ぜひとも積極的に使ってみてください。
for文での基本的な使い方
continue文をfor文のなかで使用すると、特定条件を満たす要素の処理をスキップして次の要素に進むことができます。
このテクニックは、リスト内の特定の要素だけを除外して処理したい場合にとても便利です。例えば、データクレンジングの際に異常値や不要なデータをスキップしたり、特定の条件に合わない要素を無視したりする場合に活用できます。
出力:
ペット候補: イヌ
ペット候補: ネコ
ペット候補: ウマ
ペット候補: キリン
while文でのcontinue活用法
while文でcontinue文を使用すると、特定の条件下で残りの処理をスキップし、次の反復に進むことが可能です。これはループ内で複数の条件判断を行う場合や、特定の状態になった場合に一部の処理を省略したい場合に便利なテクニックになります。
特にユーザー入力のバリデーションや、データストリームの処理において、無効なデータをスキップするうえで役立つでしょう。
出力:
1匹のネコがいます
2匹のネコがいます
4匹のネコがいます
5匹のネコがいます
7匹のネコがいます
8匹のネコがいます
10匹のネコがいます
条件付きcontinue
より複雑な条件に基づき、処理をスキップするコード例です。このテクニックを使うと、データの選択的な処理や特定条件を満たすものだけを対象とした演算が可能になります。また、複数条件を組み合わせることで、特定のパターンやケースのみをスキップできるでしょう。
条件付きcontinueは、複数の属性や特性を持つオブジェクトのコレクションを処理する場合に特に有効な使い方です。
出力:
分析対象: イヌ
分析対象: ワニ
ネストしたループでのcontinue
ネスト(入れ子)したループ内でcontinueを使用した場合、内側のループで行われている現在の反復だけがスキップされます。一方で外側のループは、影響を受けません。
このテクニックは、多次元データや階層構造の選択的処理で役立つものとなります。例えば、行列データの特定の要素だけをスキップしたり、ツリー構造の特定のノードを無視したりする場合に活用できるでしょう。
出力:
グループ1:
処理: イヌ
グループ2:
処理: ウマ
処理: ウシ
continue文と関数
関数内でcontinueを使うと、特定条件を満たす場合に関数内のループで現在行われている反復処理をスキップできます。
このテクニックを使った場合、関数内の処理ロジックがより簡潔となり、特定ケースを効率よく処理できるでしょう。特に複雑なビジネスロジックやデータ処理関数の場合、例外的なケースを明確に分離できることで、コードの保守性が向上します。
出力:
処理結果: キリン
データフィルタリングでの活用
大量のデータから、フィルタリング条件に合うものだけを処理するコード例です。continueを使うことで、フィルタリング条件に合わないデータをスキップし、必要なデータだけを処理できます。
これはデータ分析や前処理をするうえで、特に重要なテクニックです。continueと条件式を組み合わせることで、複雑なフィルタリング条件も簡潔に表現できるでしょう。
出力:
成獣: イヌ(3歳)
成獣: ゾウ(15歳)
無限ループ内での選択的処理
無限ループ内でcontinueを使うと、特定の条件に合わない場合に残りの処理をスキップできます。たとえば、無効な入力や処理不要なデータが来た場合に、continueでスキップして次の入力を待つことが可能です。
このテクニックは、ユーザー入力のバリデーションや継続的なデータストリームの処理などをする際に役立ちます。効率的な対話型プログラムの実装に適した使い方です。
出力例:
ウマが見つかりました(試行: 3回)
効率的な処理のためのcontinue
計算コストの高い処理を条件に応じてスキップすることで、プログラム効率を大幅に向上できるコード例です。continueを使うと、特に処理時間がかかる操作や、リソースを多く消費する処理を必要なケースでのみ実行できます。プログラム全体の処理時間やパフォーマンスに問題がある場合、continueをうまく活用するとよいでしょう。
出力:
1の平方根: 1.00
3の平方根: 1.73
5の平方根: 2.24
まとめ
Pythonのcontinue文は、ループ内で特定の条件に基づき処理をスキップするために非常に便利な構文です。breakがループ全体を終了するのに対して、continueには現在の反復だけをスキップして次の反復に進める特徴があります。プログラム内でcontinueを使うと、より細かな制御が可能になるでしょう。
continueは、大量のデータを処理や、特定の条件を満たさない要素を効率的にスキップしたい場合に大きな効果を発揮します。また、continue文を使うと、複雑なif-else構造の簡略化や、コードの可読性も向上するでしょう。また、forループとwhileループの両方で使用可能です。ただし、ネストしたループで使用する場合は、最も内側のループで行われている現在の反復のみがスキップされる点で注意が必要です。
実際のプログラミングでは、データフィルタリング、入力バリデーション、条件付き処理など、さまざまな場面でcontinue文が活躍します。効率的で読みやすいコードを書くためにも、continue文は早めにマスターすべきテクニックになるでしょう。
レベルを更に上げたい方はpaizaプログラミングスキルチェックへ