Pythonで参照の扱いに注意1
これは散々言われてきた事と思うが, Pythonではリストや辞書などが基本参照扱いになるため, 一見不思議な挙動になることがある. 注意していたつもりだが, 軽く陥ったのでメモしておく.
>>> burger1 = [[]] * 10 >>> print burger1 [[], [], [], [], [], [], [], [], [], []] >>> burger[0].append("spam") >>> print burger1 [['spam'], ['spam'], ['spam'], ['spam'], ['spam'], ['spam'], ['spam'], ['spam'], ['spam'], ['spam']]
ってな具合です. ちゃんと調べたわけではないが, リスト内包表記を使えばとりあえず解決する.
>>> burger2 = [[] for _ in range(10)] >>> burger2[0].append("spam") [['spam'], [], [], [], [], [], [], [], [], []]