Liste kopieren in Python

Azaz Farooq 30 Januar 2023
  1. Kopieren einer Liste in Python mit der Methode copy()
  2. Liste kopieren in Python mit der Slicing-Methode
  3. Kopieren einer Liste in Python mit der Funktion list()
  4. Kopieren einer Liste in Python mit Hilfe der List Comprehension Methode
  5. Kopieren einer Liste in Python mit der Methode copy.copy()
  6. Python-Liste Deep Copy vs Shallow Copy
Liste kopieren in Python

Eine Liste ist ein flexibler Datentyp in Python und wird in eckige Klammern [] mit durch Komma getrennten Werten eingeschlossen. Die Werte in der Liste können unterschiedliche Datentypen sein. Die Indizierung der Liste beginnt bei 0, und sie kann verkettet und zerlegt werden. Listenwerte können mit verschiedenen eingebauten Funktionen als neuer Listenwert kopiert werden.

In diesem Artikel werden verschiedene Methoden zum Kopieren einer Liste in Python vorgestellt.

Kopieren einer Liste in Python mit der Methode copy()

Der direkteste Weg, eine Liste in Python zu kopieren, ist über die Methode copy(). Wir können ein Szenario finden, in dem wir eine Kopie der Liste erstellen wollen. Das Gleichheitszeichen = kann verwendet werden, um ein Duplikat einer Liste zu erstellen. Die neue Liste wird jedoch mit der bestehenden Liste verknüpft sein. Das bedeutet, dass die neue Liste auch geändert wird, wenn Sie die ursprüngliche Liste aktualisieren. Die neue Liste verweist auf ein Element, das der alten Liste ähnlich ist.

Eine Kopie einer bestehenden Liste wird durch die Methode copy() der Liste erzeugt. Die Methode copy() nimmt keine Parameter entgegen.

Nehmen wir ein Beispiel von Obstnamen als Python-Liste. Die neue Liste wird alle Fruchtnamen kopieren, die in der vorherigen Liste vorhanden sind. Der Beispielcode lautet wie folgt.

fruits_spring = ["carrots", "kiwi", "grapes", "cherry"]
fruits_summer = fruits_spring.copy()
print(fruits_summer)

Ausgabe:

['carrots', 'kiwi', 'grapes', 'cherry']

Liste kopieren in Python mit der Slicing-Methode

In Python ist Slicing eine Methode, die wir verwenden, um Objekte aus einer Liste zu extrahieren. Wir können mit der Slicing-Methode einzelne Objekte, mehrere Elemente oder alle in einer Liste enthaltenen Elemente abrufen.

Lassen Sie uns anhand des obigen Beispiels veranschaulichen, wie wir eine Liste mithilfe von Slicing kopieren können.

Der vollständige Beispielcode ist unten angegeben.

fruits_spring = ["carrots", "kiwi", "grapes", "cherry"]
fruits_summer = fruits_spring[:]
print(fruits_summer)

Ausgabe:

['carrots', 'kiwi', 'grapes', 'cherry']

Es wird die Form des Klonens verwendet, ein Doppelpunkt, der in eckige Klammern ([:]) eingeschlossen ist. Dieser Vorgang erzeugt ein Replikat der alten Liste.

Kopieren einer Liste in Python mit der Funktion list()

Wir können eine Kopie einer Liste in Python auch mit der Funktion list() erstellen. Die Funktion list() nimmt einen Parameter an: das/die Objekt(e), das/die Sie in eine Liste umwandeln möchten.

Lassen Sie uns diesen Ansatz am Beispiel unseres Obststandes demonstrieren.

fruits_spring = ["carrots", "kiwi", "grapes", "cherry"]
fruits_summer = list(fruits_spring)
print(fruits_summer)

Ausgabe:

['carrots', 'kiwi', 'grapes', 'cherry']

Kopieren einer Liste in Python mit Hilfe der List Comprehension Methode

Dieser Ansatz verwendet List Comprehension. Er durchläuft alle vorhandenen Listenelemente mit der for-Schleife und fügt die neuen Listenelemente hinzu.

Der komplette Beispielcode ist als angegeben:

fruits_spring = ["carrots", "kiwi", "grapes", "cherry"]
fruits_summer = [i for i in fruits_spring]
print(fruits_summer)

Ausgabe:

['carrots', 'kiwi', 'grapes', 'cherry']

Kopieren einer Liste in Python mit der Methode copy.copy()

Wir können auch die Methode copy() im Modul copy verwenden, um eine Liste in Python zu kopieren.

Der vollständige Beispielcode ist wie folgt angegeben:

import copy

fruits_spring = ["carrots", "kiwi", "grapes", "cherry"]

fruits_summer = copy.copy(fruits_spring)

print(fruits_summer)

Ausgabe:

['carrots', 'kiwi', 'grapes', 'cherry']

Python-Liste Deep Copy vs Shallow Copy

Alle oben vorgestellten Methoden sind flache Kopien. Die flache Kopie bedeutet, wenn das Listenelement veränderbar ist und dieses Element in der ursprünglichen Liste verändert wird, wird diese Veränderung auch in der kopierten Liste wiedergegeben. Die flache Kopie kopiert nur den Zeiger oder die Referenz auf die Listenelemente.

original_list = [["carrots", "apple"], "kiwi", "grapes", "cherry"]

print("The original list is")
print(original_list)

copied_list = original_list.copy()

original_list[0][0] = "banana"
original_list[0][1] = "apple"
original_list[1] = "orange"

print("The original list after modification is")
print(original_list)
print("The copied list is")
print(copied_list)

Ausgabe:

The original list is
[['carrots', 'apple'], 'kiwi', 'grapes', 'cherry']
The original list after modification is
[['banana', 'apple'], 'orange', 'grapes', 'cherry']
The copied list is
[['banana', 'apple'], 'kiwi', 'grapes', 'cherry']

Das erste Element der ursprünglichen Liste ist ebenfalls eine Liste, die veränderbar ist. Wenn wir seinen Inhalt ändern, wird das entsprechende Element in der kopierten Liste geändert. In der Zwischenzeit ist das zweite Element der ursprünglichen Liste ein unveränderliches Objekt, so dass seine Änderung nicht in der kopierten Liste wiedergegeben wird.

Beim tiefen Kopieren werden im Gegensatz zum flachen Kopieren die Objekte der ursprünglichen Liste rekursiv in die neue Liste kopiert. So wird die Änderung in der ursprünglichen Liste nicht in der kopierten Liste reflektiert. Die Methode deepcopy() des Moduls copy führt den Vorgang des tiefen Kopierens durch.

import copy

original_list = [["carrots", "apple"], "kiwi", "grapes", "cherry"]

print("The original list is")
print(original_list)

copied_list = copy.deepcopy(original_list)

original_list[0] = ["banana", "apple"]
original_list[1] = "orange"

print("The original list after modification is")
print(original_list)
print("The copied list is")
print(copied_list)

Ausgabe:

The original list is
[['carrots', 'apple'], 'kiwi', 'grapes', 'cherry']
The original list after modification is
[['banana', 'apple'], 'orange', 'grapes', 'cherry']
The copied list is
[['carrots', 'apple'], 'kiwi', 'grapes', 'cherry']

Verwandter Artikel - Python List