リスト拡張の意図された動作について何かが足りないかもしれませんが、なぜ次のことが起こるのですか?
x = [[],[]]
y = [[]] * 2
print x # [[],[]]
print y # [[],[]]
print x == y # True
x[0].extend([1])
y[0].extend([1])
print x # [[1],[]], which is what I'd expect
print y # [[1],[1]], wtf?
*
正確にはわかりませんが、ここではオペレーターが予期しないことをしていると思います。==
オペレーターとrepr
両方が同じように見せても、元のxとy(extendを呼び出す前)が実際には等しくないようにする何かが内部で起こっているようです。
これに出くわしたのは、実行時に決定されたサイズの空のリストのリストを事前に入力したかったのですが、それが想像どおりに機能していないことに気づきました。同じことをするためのより良い方法を見つけることができますが、なぜこれがうまくいかなかったのか興味があります。これはPython2.5.2です。ところで-私は新しいバージョンをインストールしていないので、これがバグである場合、それがすでに修正されているかどうかはわかりません。