ネストしたループとは、ループの中に別のループを含む構造のことです。これを使用すると、複雑な繰り返し処理を簡潔に表現できます。この教材では、ネストしたループの基本を理解し、実際にサンプルコードを通じて学んでいきます。
ネストしたループは、外側のループが一回の繰り返しを行うたびに、内側のループが全ての繰り返しを実行します。例えば、2次元のリスト(行列)を処理する際に有用です。
# 2次元リストの作成
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# ネストしたループで各要素を表示
for row in matrix:
for element in row:
print(element, end=' ')
print() # 行ごとに改行
matrix
という2次元リストを定義しました。このリストは3つの行を含んでおり、それぞれの行は3つの要素を持っています。for
ループは、各行(row)を反復処理します。for
ループは、現在の行の各要素(element)を反復処理し、表示します。end=' '
を使用して、要素をスペースで区切って表示し、行の終わりで改行を行います。次の例では、1から3までの数字の組み合わせを生成します。
# 数字の組み合わせを生成
for i in range(1, 4): # 外側のループ
for j in range(1, 4): # 内側のループ
print(f'({i}, {j})', end=' ')
print() # 行ごとに改行
range(1, 4)
は1から3までの数字を生成します。外側のループはi
、内側のループはj
でそれぞれの値を取ります。i
とj
の組み合わせを表示します。print()
で改行します。ネストしたループは、実際のプログラミングにおいて非常に便利です。例えば、行列の加算や、特定の条件に基づいたデータのフィルタリングなど、さまざまな場面で使われます。
# 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)
matrix_a
とmatrix_b
という2つの2次元リスト(行列)を定義しました。result_matrix
という空のリストを用意し、加算結果を格納します。このように、ネストしたループを使うことで、複雑なデータ構造を簡単に扱うことができます。次回は、繰り返しの中断やスキップについて学んでいきましょう。