0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

全て同じ値の2次元配列を作る時の注意点

Posted at

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)]
0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?