44
33

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 5 years have passed since last update.

pythonで空の多次元配列

Last updated at Posted at 2017-08-23

空の多次元配列を作成するときにハマったことのメモ
#空の2次元配列の作成
スクリプトの中で、空の2次元配列を作りたいなぁと思い、以下のようなコードで作成してみた。

hoge = [[]] * 5

そしたら、なぜか思うような結果が返ってこない。例えば、、

>>> hoge = [[]] * 5
>>> for i in range(5):
        hoge[i].append(i)

みたいにして、hogeの中身を確認すると

>>> print hoge
[[0],[1],[2],[3],[4]]

となるかと思いきや、

>>> print hoge
[[0,1,2,3,4],[1,2,3,4],[0,1,2,3,4],[0,1,2,3,4],[0,1,2,3,4]]

こうなってしまった。つまるところ * で複製されるオブジェクトは = による代入でつくられるオブジェクト同様、元オブジェクトの参照でしかないっぽい。
結局、空の2次元配列をつくるには、

[[] for i in range(5)]

とやるのがベストかなぁ。

44
33
3

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
44
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?