2次元配列でハマったところ
全ての要素の値が0である2次元配列を作り、それぞれの要素をカウントアップしていく場合に、ある行のある列を指定して値を更新すると全ての行の同一列が更新されてしまったので、今後同じところでハマらないように備忘録として残しておこう。
ハマった時の2次元配列の作り方
以下のようにすると、4行10列の2次元配列ができる。
array2D = [[0] * 10] * 4
例えば、以下のように3行5列目の値を更新すると、、、
array2D[2][4] += 1
全ての行の5列目が更新されています。
[[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0]]
上記のような作り方をすると、各行の配列は同一になるんですね。
各行をそれぞれ別の配列として作成する場合の作り方
これでいけます。
array2D = [[0] * 10, [0] * 10, [0] * 10, [0] * 10]
ただ、スマートじゃないのでこんな感じで作るのがいいんじゃないでしょうか。
array2D = [[0] * 10 for _ in range(4)]