Python | break のネスト時の図解

Python
スポンサーリンク

以下は、ネストされたループ(入れ子ループ)で break を使ったときに何が起きるかを、初心者向けに「完全テキスト図」で説明したものです。

読みやすさ重視で、

  • 外側ループ:i
  • 内側ループ:j
    という構造で示します。

まずコード例(シンプルな break)

for i in range(1, 4):          # i = 1,2,3
    for j in range(1, 4):      # j = 1,2,3
        if j == 2:
            break              # ← 注目!
        print(i, j)
Python

break の大原則(ネスト時)

  • break「当たっているループだけ」を完全に抜ける
  • 外側ループは 続く
  • continue と違って、そのループ自体を終了する

図で見れば分かりやすいです。


全体のイメージ(俯瞰図)

外側ループ(i)
└─ 内側ループ(j)
      ├─ j == 1 → 通常処理
      ├─ j == 2 → break(内側ループを完全終了 → jループを抜けて i の次へ)
      └─ j == 3 → 実行されない(j=2 で内側が終了するため)

詳細な図解(ステップごと)

i = 1 のとき

i = 1
┌──────────────── 内側ループ(j) ───────────────────┐
│  j=1 → 条件(j==2?) false → print(1,1)                                    │
│  j=2 → 条件(j==2?) true  → break → 内側ループを完全終了 → 外側へ           │
│  j=3 → (実行されない)                                                     │
└───────────────────────────────────────────┘

(結果: (1,1) だけ出力)


i = 2 のとき(再び内側ループが復活)

i = 2
┌─────────────── 内側ループ(j) ────────────────────┐
│  j=1 → print(2,1)                                                        │
│  j=2 → break → 内側ループを終了 → 外側へ                                  │
│  j=3 → (実行されない)                                                    │
└───────────────────────────────────────────┘

i = 3 のとき

i = 3
┌─────────────────── 内側ループ(j) ────────────────┐
│  j=1 → print(3,1)                                                         │
│  j=2 → break                                                              │
│  j=3 → (実行されない)                                                     │        └───────────────────────────────────────────┘

break の作用範囲を強調した図(どこに効く?)

for i in ...:
    for j in ...:
        if j == 2:
            break      ← ★これが止めるのは「jループ」だけ

大きな図で示すと:

外側ループ(i)
┌──────────────────────────────────────────┐
│  内側ループ(j)                                                            │
│  ┌─────────────────────────────────────┐   │
│  │  if j == 2: break   ← ★ここだけ終了                             │   │
│  └─────────────────────────────────────┘   │
│     ↑↑↑ 外側ループ(i)は続く                                             │
└──────────────────────────────────────────┘

continue との決定的な違い(図で比較)

continue(その回だけ飛ばして同じループを継続)

j = 1 → OK
j = 2 → continue → j = 3
j = 3 → OK

break(そのループ自体を即終了)

j = 1 → OK
j = 2 → break → 内側ループ終了 → 次の i へ
j = 3 → 実行されない

まとめ(初心者向けに一言で)

  • continue は「飛ばすだけ」
  • break は「止める」
  • ネストされていても、止まるのは 「書かれているそのループだけ」
  • 外側ループは普通に進む
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました