<一覧に戻る

ネストしたループ

ネストしたループとは、ループの中に別のループを含む構造のことです。これを使用すると、複雑な繰り返し処理を簡潔に表現できます。この教材では、ネストしたループの基本を理解し、実際にサンプルコードを通じて学んでいきます。

ネストしたループの基本

ネストしたループは、外側のループが一回の繰り返しを行うたびに、内側のループが全ての繰り返しを実行します。例えば、2次元のリスト(行列)を処理する際に有用です。

サンプルコード1: 簡単なネストしたループ

# 2次元リストの作成
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# ネストしたループで各要素を表示
for row in matrix:
    for element in row:
        print(element, end=' ')
    print()  # 行ごとに改行

コード解説

  1. matrixという2次元リストを定義しました。このリストは3つの行を含んでおり、それぞれの行は3つの要素を持っています。
  2. 外側のforループは、各行(row)を反復処理します。
  3. 内側のforループは、現在の行の各要素(element)を反復処理し、表示します。
  4. end=' 'を使用して、要素をスペースで区切って表示し、行の終わりで改行を行います。

サンプルコード2: 数字の組み合わせを生成

次の例では、1から3までの数字の組み合わせを生成します。

# 数字の組み合わせを生成
for i in range(1, 4):  # 外側のループ
    for j in range(1, 4):  # 内側のループ
        print(f'({i}, {j})', end=' ')
    print()  # 行ごとに改行

コード解説

  1. range(1, 4)は1から3までの数字を生成します。外側のループはi、内側のループはjでそれぞれの値を取ります。
  2. 内側のループでは、現在のijの組み合わせを表示します。
  3. 各内側のループの繰り返しが完了するたびに、print()で改行します。

ネストしたループの応用

ネストしたループは、実際のプログラミングにおいて非常に便利です。例えば、行列の加算や、特定の条件に基づいたデータのフィルタリングなど、さまざまな場面で使われます。

サンプルコード3: 行列の加算

# 2つの行列を加算する
matrix_a = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

matrix_b = [
    [9, 8, 7],
    [6, 5, 4],
    [3, 2, 1]
]

result_matrix = []

for i in range(len(matrix_a)):  # 行数分ループ
    result_row = []
    for j in range(len(matrix_a[i])):  # 列数分ループ
        result_row.append(matrix_a[i][j] + matrix_b[i][j])  # 要素の加算
    result_matrix.append(result_row)

# 結果の表示
for row in result_matrix:
    print(row)

コード解説

  1. matrix_amatrix_bという2つの2次元リスト(行列)を定義しました。
  2. result_matrixという空のリストを用意し、加算結果を格納します。
  3. 外側のループは、行数分繰り返します。
  4. 内側のループは、各行の列数分繰り返し、対応する要素を加算します。
  5. 最後に、結果の行列を表示します。

このように、ネストしたループを使うことで、複雑なデータ構造を簡単に扱うことができます。次回は、繰り返しの中断やスキップについて学んでいきましょう。

出力結果: