Ich versuche, meine matrix
mit Nullen zu füllen. Leider, im folgenden Beispiel Variablen x
und y
sind redundant:Redundante Variable beim Erstellen Matrix nach Listenverständnis
self.matrix = [[0 for x in range(0, self.N)] for y in range(0, self.N)]
Liste Multipliziert, kopieren Sie nur Verweise, was natürlich nicht das, was ich erwarte:
>>> 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]]
So ist es eine Lösung mit einem Listenverständnis Redundanzvariablen zu vermeiden (x
& y
)?
@Ashwini: Wie ist das hilfreich? –
Wenn ich nicht falsch liege, dann ist sein Problem, dass wenn er einem bestimmten Listenelement einen Wert hinzufügt, es auch zu den anderen Listen innerhalb der Liste namens Matrix hinzugefügt wird. und http://stackoverflow.com/a/8713681/846892 erläutert dieses Verhalten von Listen. –
@AshwiniChaudhary: Er weiß über dieses Verhalten. Die Frage ist eine ganz andere, aber ... –