【Python】多次元のリスト
Pythonでの「多次元のリスト」について
このページでは、Pythonにおける「多次元のリスト」について詳しく解説します。以下の見出しから、興味のあるセクションにジャンプできます。
多次元リストとは
Pythonでは、リストの中にさらにリストを格納することで「多次元リスト」を作成することができます。これは「入れ子リスト (nested list)」とも呼ばれます。例えば、行列や表形式のデータを表現する際に便利です。
# 2次元リストの例
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
このように、リストの中にリストを含めることで、複数の次元を持つデータ構造を実現します。
多次元リストの作成
多次元リストを作成する方法はいくつかあります。手動で定義する方法や、ループや内包表記を使って動的に生成する方法があります。
# 手動で定義
grid = [
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]
]
# forループを使って生成
rows, cols = 3, 3
grid = [[0 for _ in range(cols)] for _ in range(rows)]
# 内包表記を使用
matrix = [[i * j for j in range(5)] for i in range(5)]
要素へのアクセス方法
多次元リストの要素にはインデックスを指定してアクセスします。複数のインデックスを使うことで、階層的にデータを取得できます。
# 要素にアクセス
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# 1行目の2列目を取得
value = matrix[0][1]
print(value) # 出力: 2
# 要素を更新
matrix[2][0] = 10
print(matrix) # 出力: [[1, 2, 3], [4, 5, 6], [10, 8, 9]]
ループによる操作
多次元リストを操作する際には、ネストされたループを使うことが一般的です。
# 行ごとにループ
for row in matrix:
print(row)
# 全ての要素をループ
for row in matrix:
for elem in row:
print(elem, end=" ")
print()
内包表記を使った操作
内包表記を使うと、簡潔に多次元リストを作成したり、操作したりできます。
# 3x3の単位行列を作成 identity_matrix = [[1 if i == j else 0 for j in range(3)] for i in range(3)] print(identity_matrix) # 各要素を2倍にする doubled_matrix = [[elem * 2 for elem in row] for row in matrix] print(doubled_matrix)
多次元リストの操作
多次元リストの操作には、リストの追加、削除、結合などが含まれます。
# 新しい行を追加
matrix.append([10, 11, 12])
print(matrix)
# 行を削除
del matrix[1]
print(matrix)
# 列の操作
for row in matrix:
row.append(0)
print(matrix)
実用的な例
ここでは、多次元リストを使用したいくつかの実用的な例を示します。
# 数値データの転置
data = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# 転置を行う
transposed = [[row[i] for row in data] for i in range(len(data[0]))]
print(transposed)
# グリッド生成
rows, cols = 5, 5
grid = [[(i, j) for j in range(cols)] for i in range(rows)]
print(grid)
# フィルタリング
filtered = [[elem for elem in row if elem % 2 == 0] for row in data]
print(filtered)
このように、多次元リストはデータ構造を効率的に扱うための強力なツールです。用途に応じて柔軟に利用しましょう。