1. 🚂 Die Zugwaggon-Analogie: Was ist eine Liste?
Eine Liste (list) ist ein geordneter Behälter für mehrere Werte.
Du kannst dir eine Liste wie einen Zug mit durchnummerierten Waggons vorstellen:
Zugwaggons & Indexe:
Jedes Element hat einen festen Platzhalter – den Index. Python zählt immer ab 0!
| Positiver Index | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| Werte (Waggons) | "Apfel" |
"Banane" |
"Kirsche" |
"Dattel" |
"Erdbeere" |
| Negativer Index | -5 | -4 | -3 | -2 | -1 |
fruechte = ["Apfel", "Banane", "Kirsche", "Dattel", "Erdbeere"] print(fruechte[0]) # -> "Apfel" (Erstes Element) print(fruechte[2]) # -> "Kirsche" (Drittes Element) print(fruechte[-1]) # -> "Erdbeere" (Letztes Element) print(fruechte[-2]) # -> "Dattel" (Vorletztes Element)
2. ✂️ Slicing: Teile einer Liste herausschneiden
Mit dem Slice-Muster liste[start:stop:step] schneidest du beliebige Teilbereiche heraus.
Wichtig: Der stop-Index ist immer exklusiv (wird nicht mitgenommen)!
zahlen = [10, 20, 30, 40, 50, 60] # 1. Bereich von Index 1 bis vor Index 4: print(zahlen[1:4]) # -> [20, 30, 40] # 2. Vom Anfang bis vor Index 3: print(zahlen[:3]) # -> [10, 20, 30] # 3. Ab Index 3 bis ganz zum Schluss: print(zahlen[3:]) # -> [40, 50, 60] # 4. Alle Elemente ohne erstes und letztes: print(zahlen[1:-1]) # -> [20, 30, 40, 50] # 5. Jedes 2. Element (Schrittweite 2): print(zahlen[::2]) # -> [10, 30, 50] # 6. Liste komplett rückwärts: print(zahlen[::-1]) # -> [60, 50, 40, 30, 20, 10]
💡 Slicing erzeugt immer eine NEUE Liste:
Wenn du kopie = zahlen[:] oder rueckwaerts = zahlen[::-1] schreibst, bleibt die Original-Liste völlig unverändert!
3. 🛠️ Methoden & Eingebaute Funktionen
Listen bieten praktische Werkzeuge, um Elemente zu verändern, zu durchsuchen und auszuwerten:
tiere = ["Hund", "Katze"] # Am Ende anfügen: tiere.append("Maus") # -> ["Hund", "Katze", "Maus"] # An bestimmter Stelle einfügen: tiere.insert(0, "Papagei") # -> ["Papagei", "Hund", "Katze", "Maus"] # Letztes Element entfernen und zurückgeben: raus = tiere.pop() # raus = "Maus", Rest: ["Papagei", "Hund", "Katze"] # Bestimmten Wert sicher mit 'in' prüfen und entfernen: if "Katze" in tiere: tiere.remove("Katze") # Entfernt "Katze" # Sortieren & Umdrehen (in-place am Original): tiere.sort() tiere.reverse()
⚠️ Vorsicht bei .remove():
Wenn du liste.remove("Etwas") aufrufst und "Etwas" gar nicht in der Liste ist, stürzt dein Programm mit einem ValueError ab! Prüfe vorher immer mit if "Etwas" in liste:.
Statistik & Rechnen mit Listen
noten = [1.0, 2.3, 1.7, 3.0] print(len(noten)) # -> 4 (Anzahl der Elemente) print(min(noten)) # -> 1.0 (kleinste Zahl / beste Note) print(max(noten)) # -> 3.0 (größte Zahl / schlechteste Note) print(sum(noten)) # -> 8.0 (Summe) schnitt = sum(noten) / len(noten) # -> 2.0 (Durchschnitt)
4. 🎯 Deine Aufgaben in aufgabe.py
Öffne die Datei g07_listen_und_sequenzen/aufgabe.py und löse die 5 TODOs:
💡 Lösungshinweise (Aufklappen bei Bedarf)
🔍 Tipp zu TODO 3 (Element sicher entfernen)
def entferne_element(liste, element): if element in liste: liste.remove(element) return True return False
🔍 Tipp zu TODO 5 (Notenschnitt ohne Ausreißer)
def noten_durchschnitt_ohne_ausreisser(noten): if len(noten) < 3: return 0.0 kopie = list(noten) kopie.remove(min(kopie)) kopie.remove(max(kopie)) return sum(kopie) / len(kopie)
5. 🧪 Lösung überprüfen
Führe im Terminal folgenden Befehl aus:
Terminal
python3 test_aufgabe.py