Rückwirkung von Änderungen..?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Frank86
User
Beiträge: 9
Registriert: Montag 13. März 2006, 11:42

Montag 13. März 2006, 12:06

Hi,

bin neu hier und hab auch noch nicht so viel programmiert. Hab jetzt ein ganz eigenartiges Problem bei python und komm nicht weiter... Ich beschreibs einfach mal, vielleicht kann mir ja jemand damit helfen:

also:

ich hab eine Liste, in der sind andere listen mit Zahlen, diese nenne ich jetzt mal Orginalliste.
Nun wird eine NeueListe erstellt, mit NeueListe = OrginalListe.
Diese neue Liste wird nun im Laufe des Programms verändert und soll am Ende wieder gleich der OrginalListe gesetzt werden.
Die OrginalListe hätte sich in der Zwischenzeit also nicht verändern sollen. Sie hat sich aber genauso verändert wie die OrginalListe.
Ich hab bereits NeueListe=copy.copy(OrginalListe) probiert, aber auch dann ändert sich die OrginalListe mit.

Hab aber keine Ahnung woran das liegen könnte und wie ich das dann verhindern soll?!
Danke für eure Hilfe

Frank


edit:
habs selbst gefunden.... hätte NeueListe= copy.deepcopy(OrginalListe) verwenden müssen! Danke trotzdem
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Montag 13. März 2006, 12:18

Oder

Code: Alles auswählen

 NeueListe = OriginalListe[:]
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Montag 13. März 2006, 15:21

Oder
<snip>
Nein. Der Code den Rebecca gepostet hat macht das selbe wie copy.copy, nämlich eine shallow-copy. Da es mit deepcopy geht ist das Problem wohl eher weniger dass die Liste sich verändert, sondern dass sich Objekte die in der Liste sind zwischen NeueListe und AlteListe verändern.

Lies Dir auf jeden Fall mal den Unterschied zwischen einer seichten Kopie und einer tiefen Kopie durch (geht an den OP).
--- Heiko.
Antworten