私はmatrix
をゼロで埋めようとしています。生憎、次の例では、変数x
とy
はredundandです:リストを掛けるリストの理解でマトリックスを作成する際の冗長変数
self.matrix = [[0 for x in range(0, self.N)] for y in range(0, self.N)]
が、私は期待していないものです当然のものだけを参照をコピーします。だから、
>>> matrix = [[0] * 5] * 5
>>> matrix
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
>>> matrix[1][1] = "X"
>>> matrix
[[0, 'X', 0, 0, 0], [0, 'X', 0, 0, 0], [0, 'X', 0, 0, 0], [0, 'X', 0, 0, 0], [0, 'X', 0, 0, 0]]
、どんな解決策があります冗長変数(x
& y
)を避けるためにリストの理解を使用していますか?ご覧のとおり
[[0]*self.N for _ in range(self.N)]
は、我々は[0]*size
イディオムを使用することができます。
@Ashwini:どのように役立ちますか? –
もし私が間違っていないなら、彼の問題は、特定のリスト項目に値を追加するときに、それはmatrixという名前のリスト内の他のリストにも追加されるということです。 およびhttp://stackoverflow.com/a/8713681/846892では、この動作を説明しています。 –
@AshwiniChaudhary:彼はその行動について知っています。質問はまったく別のものですが... –