Warum sind alle Arrays gleich?

...komplette Frage anzeigen

2 Antworten

Zuerst: Mit { } oder dict() legst Du ein Dictionary an. Das erfüllt den Zweck zwar auch, ist aber Overkill. Mit [ ] oder list() erzeugt man eine neue Liste. Das reicht für diesen Zweck.

Dein zwischenArray wird nur einmal erzeugt und in jeder for-i-Schleife neu befüllt. Am Ende enthalten alle Referenzen darauf deshalb dieselben 5 Werte, die Du zuletzt eingetragen hast.

Schiebe die Initialisierung von zwischenArray eine Zeile tiefer. Dann bekommst Du für jedes i ein eigenes Array.

Antwort bewerten Vielen Dank für Deine Bewertung

In der Zeile, in der "zwischenArray" im "Chromosome" Objekt verpackt werden soll, wird nur eine Referenz auf das zwischenArray übergeben, und NICHT das Array, bzw. die Liste an sich!

Mit folgendem Trick, wird eine Kopie erzeugt, die dann dem Konstruktor von "Chromosome" übergeben wird:

Chromosome(None, list(self.zwischenArray))

Und im übrigen musst du vermutlich nicht alle lokalen Variablen als Objekt-Member definieren! :)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von ralphdieter
14.11.2016, 09:46

lokalen Variablen als Objekt-Member definieren

Wie peinlich, dass mir das nicht aufgefallen ist.

Dein "Trick" mit der Kopie ist zwar gut, gehört aber zweifellos in den Konstruktor von Chromosome. Ich krieg' jedesmal die Krise, wenn ich umständlichen Code schreiben muss, nur weil andere ihre Hausaufgaben nicht ordentlich gemacht haben.

0

Was möchtest Du wissen?