Tuesday, March 25, 2008

pythonメモ: 配列の初期化

これは間違い。

>>> c=[[0,0,0]]*3
>>> c
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> c[1][2]=3
>>> c
[[0, 0, 3], [0, 0, 3], [0, 0, 3]]
>>> 


[0,0,0]が示しているのが同じオブジェクトってことなんでしょうね。
以下だと思った通りの動きなのだが、一体、何が違うの、と言う感じ。

>>> d=[]
>>> d.append([0,0,0])
>>> d.append([0,0,0])
>>> d.append([0,0,0])
>>> d
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> d[1][2]=3
>>> d
[[0, 0, 0], [0, 0, 3], [0, 0, 0]]


No comments: