Pythonでネストされたループの書き方と制御方法を解説します。具体的なコード例とその詳細な解説、さらには応用例を3つ以上を挙げて、実践的な使い方を学びます。
目次
なぜネストされたループが必要なのか
ネストされたループは、ループの中に別のループを配置する技術です。この構造は多次元データの操作や、複雑な条件を満たすデータを抽出する場合など、多くの場面で使用されます。
基本的なネストされたループの書き方
Pythonでは`for`や`while`ループをネストすることができます。基本的な書き方を見ていきましょう。
# forループをネストする基本的な例
for i in range(3): # 外側のループ
for j in range(3): # 内側のループ
print(f'i={i}, j={j}')
コードの詳細解説
上記のコードでは、外側のループが`i`を0から2まで変化させ、内側のループが`j`を0から2まで変化させます。これにより、9通り(3×3)の組み合わせが生成されます。
ネストされたループの制御
ネストされたループでも`break`や`continue`を使用することで制御が可能です。ただし、これらの制御文は直近のループにのみ影響を与えます。
# breakを使ったネストされたループの制御例
for i in range(3): # 外側のループ
for j in range(3): # 内側のループ
if j == 1:
break # 内側のループを抜ける
print(f'i={i}, j={j}')
コードの詳細解説
この例では、内側のループで`j`が1になった場合に`break`が実行され、内側のループが中断されます。しかし、外側のループは影響を受けません。
応用例
ここからは、実際のプログラムでよく使用されるネストされたループの応用例を紹介します。
2次元配列の要素を一括変換
# 2次元配列の全要素を10倍にする
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for i in range(len(matrix)):
for j in range(len(matrix[i])):
matrix[i][j] *= 10
print(matrix)
リストの直積を生成する
# リストAとBの直積を生成
A = [1, 2]
B = ['a', 'b']
product = [(a, b) for a in A for b in B]
print(product)
条件に合う要素の探索
# 2次元配列内で条件に合う要素を探す
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for i in range(len(matrix)):
for j in range(len(matrix[i])):
if matrix[i][j] == 5:
print(f'Found at {i}, {j}')
まとめ
ネストされたループは、複数の条件や多次元データを効率よく処理するための重要なテクニックです。基本的な書き方から、制御方法、さらには応用例までを学び、Pythonプログラミングの幅を広げましょう。
コメント