【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)
このように、多次元リストはデータ構造を効率的に扱うための強力なツールです。用途に応じて柔軟に利用しましょう。