【Python】多次元のリスト

【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)

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です