【Python】for文で2次元配列を扱う方法
目次
- 2次元配列とfor文の基本
- ネストしたfor文で2次元配列を処理
- インデックスを取得しながらループ処理
- リスト内包表記を使った2次元配列処理
- zipを使って列ごとに処理
- NumPyを使った効率的な処理
- 応用例:2次元配列のデータ処理
2次元配列とfor文の基本
Pythonでは、リストのリストとして2次元配列を表現できます。for文を使って各要素を処理する基本的な方法を示します。
# 2次元配列の定義
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# 各行ごとに処理
for row in matrix:
print(row)
このコードを実行すると、各行がそのまま出力されます。
ネストしたfor文で2次元配列を処理
2次元配列の各要素を1つずつ取得するには、for文をネスト(入れ子)させます。
# 各要素を取得
for row in matrix:
for element in row:
print(element, end=" ")
print()
出力:
1 2 3 4 5 6 7 8 9
インデックスを取得しながらループ処理
enumerate()
を使うと、インデックス付きで2次元配列を処理できます。
# インデックス付きでループ
for i, row in enumerate(matrix):
for j, element in enumerate(row):
print(f"matrix[{i}][{j}] = {element}")
リスト内包表記を使った2次元配列処理
リスト内包表記を使うと、for文を簡潔に記述できます。
# 2次元配列を1次元に変換
flat_list = [element for row in matrix for element in row]
print(flat_list)
出力:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
zipを使って列ごとに処理
zip()
を使うと、行ではなく列単位で処理できます。
# 列ごとに処理
for col in zip(*matrix):
print(col)
出力:
(1, 4, 7) (2, 5, 8) (3, 6, 9)
NumPyを使った効率的な処理
NumPyを使うと、2次元配列の操作がより簡潔かつ高速になります。
import numpy as np
# NumPy配列を作成
np_matrix = np.array(matrix)
# 転置(行と列を入れ替える)
print(np_matrix.T)
応用例:2次元配列のデータ処理
例えば、2次元配列の各要素を2倍にする処理は以下のように書けます。
# すべての要素を2倍に
new_matrix = [[element * 2 for element in row] for row in matrix]
print(new_matrix)
出力:
[[2, 4, 6], [8, 10, 12], [14, 16, 18]]