Liste der Listenänderungen, die sich unerwartet in Unterlisten widerspiegeln
In Python, wenn Sie eine Liste von Listen erstellen und eine der Unterlisten ändern, wird die Änderung in allen anderen Unterlisten ebenfalls widergespiegelt, da sie alle auf dasselbe Objekt im Speicher verweisen. Dies wird als "flache Kopie" der Liste von Listen bezeichnet.
Hier ist ein Beispiel:
original_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# Erstellen Sie eine flache Kopie der Liste
copied_list = original_list.copy()
# Ändern Sie die erste Unterliste der kopierten Liste
copied_list[0][1] = 99
# Drucken Sie die ursprüngliche Liste
print(original_list)
# Ausgabe: [[1, 99, 3], [4, 5, 6], [7, 8, 9]]
Wie man sieht, wird die Änderung, die an der ersten Unterliste der copied_list vorgenommen wurde, auch in der original_list widergespiegelt.
Um eine echte Kopie der Liste von Listen zu erstellen, sollten Sie die copy.deepcopy()
-Funktion aus dem copy
-Modul verwenden.
import copy
original_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# Erstellen Sie eine tiefe Kopie der Liste
copied_list = copy.deepcopy(original_list)
# Ändern Sie die erste Unterliste der kopierten Liste
copied_list[0][1] = 99
# Drucken Sie die ursprüngliche Liste
print(original_list)
# Ausgabe: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Jetzt beeinflussen Änderungen an den Unterlisten der copied_list nicht mehr die original_list