pythonで2次元リスト

2次元リストを作る時,

[[]] * n

とすると,思い通りの動作にならない.

In [1]: l = [[]] * 3

In [2]: l
Out[2]: [[], [], []]

In [3]: l[0].append(1)

In [4]: l
Out[4]: [[1], [1], [1]]

全リストが同じインスタンスを指している.

2次元リストを作る時は,

[[] for i in range(n)]

とするのが間違いないみたい.