次のように、初期化された長さのない 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」を使用し、非正方形のマトリックスが必要な場合に、インデックス付けで発生する可能性のある混乱を避けるために、このように考えています。