ハマったメモ*Python
気ばらしにPythonで何かを書いていた。メモ。
m行n列な多次元配列を作って、配列の中身をいじりたかった。
#5x3の、要素を0で初期化した多次元配列を作りたい。 In [44]: d=[[0]*3]*5 #多次元配列できた。 In [45]: d Out[45]: [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] #(1,2)成分に1を代入したい。 In [46]: d[1][2]=1 #...違う。 In [47]: d Out[47]: [[0, 0, 1], [0, 0, 1], [0, 0, 1], [0, 0, 1], [0, 0, 1]]
In [68]: d=[] In [69]: for n in range(5): ....: d.append([0]*3) ....: In [70]: d Out[70]: [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] #(1,2)成分に1を代入 In [71]: d[1][2]=1 #できた. In [72]: d Out[72]: [[0, 0, 0], [0, 0, 1], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
つまり...
d=[[0]*3]*5 #は, d=[[0]*3,[0]*3,[0]*3,[0]*3,[0]*3] #じゃなくて, a=[[0]*3] d=[a,a,a,a,a] #と同等というコト。
そりゃあ..そうか。そりゃ、そうか?
文法がまだよく分かってないけれど、もっと上手く多次元配列を作る方法はあるのかもしれない。
new hoge...みたいな何かがあれば.(なんかこのエントリ頭悪いな)