Python Listen kopieren (engl.: Copy Lists): Das Kopieren von Listen in Python ist eine häufige Aufgabe, die auf verschiedene Arten durchgeführt werden kann. Es ist wichtig zu verstehen, wie Listen in Python funktionieren, um unerwartete Änderungen an den Originallisten zu vermeiden. Hier sind verschiedene Methoden, um eine Liste zu kopieren.
1. Kopieren mit dem copy()-Methodenaufruf
Die copy()
-Methode erstellt eine flache Kopie der Liste. Dies ist die einfachste und direkteste Methode, um eine neue Liste zu erstellen, die die gleichen Elemente wie die Originalliste enthält.
original_liste = [1, 2, 3, 4]
kopierte_liste = original_liste.copy()
print(kopierte_liste) # Ausgabe: [1, 2, 3, 4]
2. Kopieren mit dem list()-Konstruktor
Der list()
-Konstruktor kann ebenfalls verwendet werden, um eine Kopie einer Liste zu erstellen. Diese Methode funktioniert ähnlich wie copy()
.
original_liste = [1, 2, 3, 4]
kopierte_liste = list(original_liste)
print(kopierte_liste) # Ausgabe: [1, 2, 3, 4]
3. Kopieren mit Slicing
Eine weitere Möglichkeit, eine flache Kopie einer Liste zu erstellen, ist das Slicing. Dies ist eine elegante und kompakte Methode, um eine Kopie zu erstellen.
original_liste = [1, 2, 3, 4]
kopierte_liste = original_liste[:]
print(kopierte_liste) # Ausgabe: [1, 2, 3, 4]
4. Kopieren mit der copy-Modul
Für tiefere Kopien, insbesondere wenn die Liste andere Objekte oder Listen enthält, kann das copy
-Modul verwendet werden. Die Funktion deepcopy()
erstellt eine tiefere Kopie, die auch die verschachtelten Objekte berücksichtigt.
import copy
original_liste = [1, 2, [3, 4]]
kopierte_liste = copy.deepcopy(original_liste)
print(kopierte_liste) # Ausgabe: [1, 2, [3, 4]]
5. Kopieren mit List Comprehension
Sie können auch List Comprehensions verwenden, um eine Kopie der Liste zu erstellen. Dies ist besonders nützlich, wenn Sie die Elemente während des Kopiervorgangs transformieren möchten.
original_liste = [1, 2, 3, 4]
kopierte_liste = [x for x in original_liste]
print(kopierte_liste) # Ausgabe: [1, 2, 3, 4]
Wichtiger Hinweis: Flache vs. Tiefe Kopien
- Eine flache Kopie (z. B. mit
copy()
oderlist()
) kopiert nur die Referenzen der Objekte in der Liste. Änderungen an verschachtelten Objekten wirken sich auf die Originalliste aus. - Eine tiefe Kopie (z. B. mit
deepcopy()
) kopiert sowohl die Liste als auch alle enthaltenen Objekte, sodass Änderungen an den Kopien die Originale nicht beeinflussen.
Häufig gestellte Fragen
Wie kann ich eine flache Kopie einer Liste erstellen?
Verwenden Sie die copy()
-Methode oder Slicing ([:]
), um eine flache Kopie zu erstellen.
Was ist der Unterschied zwischen flachen und tiefen Kopien?
Flache Kopien kopieren nur die Referenzen zu Objekten, während tiefe Kopien alle Objekte und deren Inhalte vollständig kopieren.
Wann sollte ich deepcopy()
verwenden?
Verwenden Sie deepcopy()
, wenn Ihre Liste verschachtelte Listen oder komplexe Objekte enthält, und Sie sicherstellen möchten, dass Änderungen an der Kopie das Original nicht beeinflussen.
Kann ich List Comprehension zum Kopieren verwenden?
Ja, List Comprehension ist eine flexible Möglichkeit, um eine Liste zu kopieren, besonders wenn Sie die Elemente während des Kopiervorgangs transformieren möchten.