結論
リストのリストを作成するときは
[[]] * n
ではなく
[[] for _ in range(n)]
を使おう。
詳細
list_of_list = [[]] * 3
print(list_of_list)
とすると
[[], [], []]
が表示されます。
リストのリストの初期化方法としてお手軽で良さそうですが、ダメです。
例えば
list_of_list[1].append(100)
print(list_of_list)
とすると想定は
[[], [100], []]
ですが、実際は
[[100], [100], [100]]
となってしまいます。
[[]] * n でリストを作ると内部のリストは中身を共有するみたいです。
Python詳しい人にとっては当たり前かもしれませんが、
遭遇した時は驚きました。
改善するには
list_of_list = [[] for _ in range(n)]
とします。
これで想定通りの動きをしてくれます。
以上です。