CodeGym /Kurse /Python SELF DE /Praktische Arbeit mit Listen

Praktische Arbeit mit Listen

Python SELF DE
Level 7 , Lektion 9
Verfügbar

9.1 Erstellen einer Kopie einer Liste

Das Erstellen einer Kopie einer Liste in Python ist eine wichtige Aufgabe, die erforderlich sein kann, um unerwartete Änderungen an Daten bei der Manipulation von Listen zu vermeiden. Bei der Arbeit mit Listen ist es wichtig, den Unterschied zwischen flachem (shallow) und tiefem (deep) Kopieren zu verstehen.

Flaches Kopieren

Eine flache Kopie erstellt eine neue Liste, aber die Elemente bleiben dieselben (wenn die Elemente Referenzen sind, werden sie als Referenzen kopiert). Das kann auf mehrere Arten geschehen:

Mit der Funktion list():


original = [1, 2, 3]
copy = list(original)

Verwendung von Slices:


original = [1, 2, 3]
copy = original[:]

Methode copy():

Tiefes Kopieren

Tiefes Kopieren erstellt eine neue Liste, in der auch Kopien aller eingebetteten Objekte erstellt werden. Dies ist besonders wichtig, wenn Listen andere veränderbare Datentypen enthalten, wie andere Listen. Dazu verwendet man das Modul copy:


import copy
original = [[1, 2], [3, 4]]
deep_copy = copy.deepcopy(original)

Wann welche Methode verwenden

Flaches Kopieren ist schneller und eignet sich, wenn die Listenelemente einfach sind oder keine Duplizierung erfordern (z. B. Strings oder Zahlen). Tiefes Kopieren ist notwendig, wenn die Elemente der Liste selbst veränderbare Sammlungen sind oder wenn Änderungen an der Kopie sich nicht auf das Original auswirken sollen.

9.2 Entfernen eines Elements aus einer Liste

Es gibt eine so einfache und gleichzeitig komplexe Aufgabe: Entfernen von Element(en) aus der Liste in einer Schleife.

Wenn wir mit einer for-Schleife durch eine Liste laufen, gibt die Liste ein spezielles Kindobjekt zurück — einen Iterator, der von der for-Schleife verwendet wird, um alle seine Elemente zu durchlaufen. Und wenn man während der Nutzung des Iterators [durch die for-Schleife] ein Element aus der Liste entfernt, kann der Iterator falsch arbeiten.

Wenn du das 3. Element entfernt hast, wird das 4. automatisch zum 3. Und die for-Schleife schaltet über den Iterator auf das neue 4. Element um, das früher das 5. war. Und somit wird das 4. Element übersprungen.

Hier sind einige Methoden, wie man Elemente sicher entfernen kann:

Verwendung der Methode remove()

Wenn du genau weißt, welches Element entfernt werden soll, kannst du remove() innerhalb der Schleife verwenden. Dies kann jedoch ineffizient sein, wenn es viele Elemente gibt, da jeder Aufruf von remove() das Element vor dem Entfernen sucht, was die Ausführung verlangsamt.

Erstellen einer neuen Liste

Eine sicherere Methode ist es, eine neue Liste nur mit den Elementen zu erstellen, die du behalten möchtest:


original_list = [1, 2, 3, 4, 5, 6]
new_list = [x for x in original_list if x % 2 != 0]  # nur ungerade Zahlen behalten

Verwendung von Indizes

Man kann eine for-Schleife mit rückwärts gerichteten Indizes verwenden, um Elemente zu löschen, ohne dass etwas übersprungen wird:


for i in range(len(original_list) - 1, -1, -1):
    if original_list[i] % 2 == 0:  # Bedingung für das Löschen
        del original_list[i]

Wenn wir die Liste von hinten durchgehen, ändern sich beim Entfernen von Elementen nur die Indizes der bereits durchlaufenen Elemente.

Verwendung einer Kopie der Liste:

Angenommen, du möchtest alle negativen Zahlen aus einer Liste entfernen:


numbers = [1, -1, 2, -2, 3, -3]
# Eine Kopie der Liste erstellen, um sicher zu iterieren
for number in numbers.copy():
    if number < 0:
        numbers.remove(number)
print(numbers) # Gibt [1, 2, 3] aus

9.3 Zusammenfügen von Listen

Oftmals muss man zwei oder mehr Listen in eine zusammenführen. Das kann auf mehrere Arten geschehen, die jeweils für verschiedene Aufgaben geeignet sind und ihre eigenen Besonderheiten haben.

Verwendung des Operators +

Der einfachste Weg, zwei Listen zusammenzufügen, ist die Verwendung des Operators +. Dies ist eine direkte und intuitive Methode:


list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined_list = list1 + list2
print(combined_list)  # Gibt [1, 2, 3, 4, 5, 6] aus

Methode extend()

Die Methode extend() modifiziert die erste Liste, indem sie alle Elemente der zweiten Liste an deren Ende hinzufügt. Dies verändert die ursprüngliche Liste:


list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)  # Gibt [1, 2, 3, 4, 5, 6] aus

List Comprehensions

List Comprehensions können verwendet werden, um neue Listen zu erstellen, indem Elemente aus mehreren Listen in eine komplexe Liste zusammengeführt werden:


list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined_list = [item for sublist in [list1, list2] for item in sublist]
print(combined_list)  # Gibt [1, 2, 3, 4, 5, 6] aus

Methode append()

Man kann alle Elemente der zweiten Liste einzeln zur ersten hinzufügen. Nun, als Option.


list1 = [1, 2, 3]
list2 = [4, 5, 6]
for x in list2:
    list1.append(x)
print(list1)  # Gibt [1, 2, 3, 4, 5, 6] aus

Im Grunde war das alles, was ich euch über Listen erzählen wollte 😊

1
Опрос
Listen in Python,  7 уровень,  9 лекция
недоступен
Listen in Python
Listen in Python
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION