Element aus Listen entfernen

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
pikophallus
User
Beiträge: 2
Registriert: Montag 26. Dezember 2016, 16:12

Frohe Weihnachten zusammen,

ich bin gerade ein wenig am Verzweifeln. Als Übung wollte ich in Python eine Funktion zur Berechnung von Determinaten implementieren, allerdings stimmt mit meinen Listen, in denen ich die Matrix speichere, irgendetwas nicht.
Der Code:

Code: Alles auswählen

liste = [[1,2,3], [4,5,6], [7,8,9]]
matrix = list(liste)
for i in range(len(matrix)):
    matrix[i].pop(0)
matrix.pop(0)
print(liste)
print(matrix)
Das Problem ist nun, dass die anfangs kopierte Liste "liste" auch in der for-Schleife verändert wird.
Ausgabe:
[[2, 3], [5, 6], [8, 9]]
[[5, 6], [8, 9]]

Weiß jemand, warum und wie man das umgehen kann?
Danke schonmal
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

pikophallus hat geschrieben:Das Problem ist nun, dass die anfangs kopierte Liste "liste" auch in der for-Schleife verändert wird.
Ist es das?
Ausgabe:
[[2, 3], [5, 6], [8, 9]]
[[5, 6], [8, 9]]
Wie kommt es dass die ursprüngliche Liste noch 3 Elemente hat wenn sie verändert wurde, so wie annimmst?

Veränderungen an der Kopie haben keinen Einfluss auf das Original. Kopie und Original haben allerdings dieselben (nicht nur die die gleichen) Listen als Inhalt.
pikophallus
User
Beiträge: 2
Registriert: Montag 26. Dezember 2016, 16:12

Vielen Dank! Der letzte Satz war der ausschlaggebende Punkt. Ich wusste nicht, dass die Listen, die die Elemente der großen Liste sind, dieselben sind, und somit auch vom Vorgänger verändert wurden. Jetzt geht's jedenfalls. :)
Antworten