2次元配列を定義するにはどうすればいいですか? [重複] 質問する

2次元配列を定義するにはどうすればいいですか? [重複] 質問する

次のように、初期化された長さのない 2 次元配列を定義します。

Matrix = [][]

しかし、次のエラーが発生します:

IndexError: リストのインデックスが範囲外です

ベストアンサー1

技術的には、初期化されていない配列にインデックスを付けようとしています。項目を追加する前に、まずリストを使用して外側のリストを初期化する必要があります。Python ではこれを「リストの内包表記」と呼びます。

# Creates a list containing 5 lists, each of 8 items, all set to 0
w, h = 8, 5
Matrix = [[0 for x in range(w)] for y in range(h)] 

#リストにアイテムを追加できるようになりました:

Matrix[0][0] = 1
Matrix[6][0] = 3 # error! range... 
Matrix[0][6] = 3 # valid

マトリックスは「y」アドレス優先であることに注意してください。つまり、「y インデックス」は「x インデックス」の前に来ます。

print Matrix[0][0] # prints 1
x, y = 0, 6 
print Matrix[x][y] # prints 3; be careful with indexing! 

好きなように名前を付けることができますが、内側のリストと外側のリストの両方に「x」を使用し、非正方形のマトリックスが必要な場合に、インデックス付けで発生する可能性のある混乱を避けるために、このように考えています。

おすすめ記事