風柳メモ

ソフトウェア・プログラミング関連の覚書が中心

Pythonで固定長リストの罠

そんなおおげさでもないけれど、はまるかも知れないのでメモ。

定数で初期化

>>> a=[0]*5
>>> a
[0, 0, 0, 0, 0]
>>> a[2]=1
>>> a
[0, 0, 1, 0, 0]

まあ、これは普通。

空dictで初期化

>>> a=[{}]*5
>>> a
[{}, {}, {}, {}, {}]
>>> a[2]['A']=1
>>> a
[{'A': 1}, {'A': 1}, {'A': 1}, {'A': 1}, {'A': 1}]

こうなってしまうので注意、と。