Lektionen des Moduls (1/4)
Listen
Eine Liste ist eine geordnete und veränderliche (mutable) Sequenz von Elementen. Sie ist die
am häufigsten verwendete Datenstruktur in Python: Du erstellst eine mit [] und veränderst sie
mit einer Reihe von Methoden, die man sich merken sollte.
Eine Liste erstellen
vuota = []
numeri = [10, 20, 30]
mista = [1, "due", 3.0, True, None] # verschiedene Typen: erlaubt, aber seltenZugriff über Index und Slice
Indizes beginnen bei 0. Negative Indizes zählen von rechts:
parole = ["a", "b", "c", "d"]
parole[0] # 'a'
parole[-1] # 'd' (letztes)
parole[1:3] # ['b', 'c'] slice [start:stop]
parole[::-1] # ['d', 'c', 'b', 'a'] umgekehrtEin Slice löst niemals einen IndexError aus: Wenn er außerhalb des Bereichs liegt, gibt er eine
leere Teilliste zurück. Der direkte Zugriff wie parole[10] hingegen löst eine
Ausnahme aus.
Eine Liste verändern
nums = [1, 2, 3]
nums.append(4) # [1, 2, 3, 4] fügt am Ende hinzu
nums.insert(0, 0) # [0, 1, 2, 3, 4] fügt an Position ein
nums.extend([5, 6]) # [0, 1, 2, 3, 4, 5, 6] verbindet
nums.pop() # 6 entfernt letztes Element
nums.pop(0) # 0 entfernt erstes Element (langsamer: O(n))
nums.remove(3) # entfernt das ERSTE Vorkommen von 3
nums[1] = 99 # ersetzt durch IndexSortieren
Zwei Formen — es ist wichtig, sie zu unterscheiden:
nums = [3, 1, 4, 1, 5, 9, 2, 6]
nums.sort() # SORTIERT nums in-place, gibt None zurück
ordinati = sorted(nums) # gibt eine NEUE Liste zurück, lässt nums unverändert
nums.sort(reverse=True)
sorted(nums, key=lambda n: -n) # Sortierung nach SchlüsselLänge, Mitgliedschaft, Iteration
len(nums) # wie viele Elemente
3 in nums # True/False
for n in nums:
print(n)Eine Liste kopieren
a = b kopiert nicht — es erstellt nur einen zweiten Namen für dieselbe Liste. Um wirklich zu kopieren:
copia = lista[:] # vollständiger Slice
copia = list(lista) # expliziter Konstruktor
copia = lista.copy() # Methode(Dies sind alles flache Kopien (shallow copies) — verschachtelte Elemente werden weiterhin geteilt.)
Listen kopieren: Achtung bei Referenzen
In Python erstellst du mit list_b = list_a keine Kopie: Du erstellst nur eine zweite Referenz. Das Ändern von list_b ändert auch list_a. Um eine echte, unabhängige Kopie zu erstellen, musst du list_b = list_a.copy() schreiben oder einen vollständigen Slice verwenden: list_b = list_a[:].
Probiere es aus
Gegeben sei die Liste `nums = [5, 2, 8, 1, 9, 3]`. Erstelle `first_three_sorted` mit den ersten drei Zahlen von nums in aufsteigender Reihenfolge sortiert. Modifiziere nums nicht.
Hinweis anzeigen
nums[:3] sind die ersten drei, dann sorted(...).
Lösung nach 3 Versuchen verfügbar
Wiederholungsübung
Füge ausgehend von `words = ['ciao']` am Ende 'mondo' hinzu und füge dann '!' am Anfang ein. Evaluiere `words`.
Hinweis anzeigen
append am Ende, insert(0, ...) am Anfang.
Lösung nach 3 Versuchen verfügbar
Zusätzliche Herausforderung
Gegeben sei die Liste `items = [10, 20, 30, 40]`. Verwende Slicing, um eine neue Liste `reversed_items` zu erstellen, die dieselben Elemente in umgekehrter Reihenfolge enthält. Evaluiere schließlich `reversed_items`.
Hinweis anzeigen
Slicing mit negativem Schritt ist [::-1]. Weise es reversed_items zu.
Lösung nach 3 Versuchen verfügbar