例外を使用せずにネストされたループをエスケープする
例外を使用してネストされたループから抜け出すことは可能ですが、面倒になる可能性があります。幸いなことに、Python ではよりクリーンなアプローチが利用できます。
「break」ステートメントと「Continue」ステートメントの使用
より洗練された解決策には、break ステートメントと continue ステートメントを使用することが含まれます。 Break ステートメントはすぐに最も内側のループを終了しますが、Continue は現在のループ内の次の反復に進みます。
次のネストされたループを考えてみましょう。
<code class="python">for x in range(10): for y in range(10): print(x * y) if x * y > 50: break else: continue # Only executed if the inner loop did NOT break break # Only executed if the inner loop DID break</code>
この例では、break ステートメントは次のループ内で実行されます。内側のループでは、条件 x * y > の場合に両方のループを終了できます。 50は満たされています。内部ループの後の else 節は、内部ループが (ブレークに遭遇することなく) 正常に終了したかどうかをチェックします。存在する場合は、 continue ステートメントを実行して、外側のループの次の反復に進みます。
複数のネストされたループを使用した例
この手法は、より深いループに拡張できます。
<code class="python">for x in range(10): for y in range(10): for z in range(10): print(x, y, z) if (x * y * z) == 30: break else: continue break else: continue break</code>
このコードは、条件 (x * y * z) == 30 が満たされた場合に 3 つのネストされたループすべてから抜け出す方法を示しています。 else ステートメントと continue ステートメントは、内側のループの終了ステータスに基づいて外側のループが正しく走査されることを保証します。
以上がPython で入れ子になったループを例外なくエスケープする方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。