Voraussetzungen
Du kennst die Inhalte aus Teil 8 und arbeitest mit einem lokalen Python-3-Interpreter (ab Python 3.10), beispielsweise in Thonny.
Das lernst du in dieser Lektion
- Listen anlegen und indizieren.
- Append und remove einsetzen.
- Mit enumerate durchlaufen.
Mehrere Werte unter einem Namen
Für fünf Messungen benötigen wir nicht fünf getrennte Variablen. Eine Liste enthält mehrere Elemente in einer festgelegten Reihenfolge:
messwerte = [18.2, 18.5, 18.4]
print(messwerte[0])
print(messwerte[-1])
Eckige Klammern erzeugen die Liste. Der Index in messwerte[0] wählt ein Element aus. Python beginnt bei 0: Die drei gültigen positiven Indizes sind 0, 1 und 2. -1 bezeichnet das letzte Element.
Listen verändern
messwerte = [18.2, 18.5, 18.4]
messwerte.append(18.6)
messwerte[1] = 18.3
print(messwerte)
append() fügt einen Wert am Ende hinzu. Durch eine Zuweisung an einen vorhandenen Index ändern wir einen Eintrag. Die Liste enthält danach [18.2, 18.3, 18.4, 18.6].
Mit remove(wert) entfernst du das erste passende Element. Ist der Wert nicht vorhanden, entsteht ein ValueError. Prüfe daher bei unsicherem Inhalt vorher mit if wert in messwerte:. len(messwerte) liefert die Anzahl der Elemente, nicht den letzten Index.
Mit Nummern ausgeben
messwerte = [18.2, 18.5, 18.4]
for nummer, wert in enumerate(messwerte, start=1):
print(f"Messung {nummer}: {wert:.1f} g")
enumerate() liefert in jedem Durchlauf eine Nummer und das zugehörige Element. Die beiden Variablennamen vor in nehmen dieses Paar auf. Die angezeigten Nummern beginnen hier bei 1; die tatsächlichen Listenindizes bleiben unverändert bei 0.
Mittelwert bestimmen
messwerte = [18.2, 18.5, 18.4]
if len(messwerte) > 0:
mittelwert = sum(messwerte) / len(messwerte)
print(f"Mittelwert: {mittelwert:.2f} g")
print(f"Minimum: {min(messwerte):.1f} g")
print(f"Maximum: {max(messwerte):.1f} g")
else:
print("Noch keine Messwerte vorhanden.")
Die Prüfung schützt vor einer Division durch 0 und vor min() oder max() einer leeren Liste. Listen dürfen unterschiedliche Typen enthalten. Für eine Messreihe ist es aber sinnvoll, nur passende Zahlen hineinzulegen.
Ausschnitte und Kopien
messwerte[:2] liefert eine neue Liste mit den ersten beiden Elementen. Auch hier ist die Endgrenze ausgeschlossen. kopie = messwerte.copy() kopiert eine einfache Liste. Dagegen erzeugt kopie = messwerte keine unabhängige Liste; beide Namen verweisen dann auf dieselbe Liste. Bei verschachtelten Strukturen ist selbst .copy() nur eine flache Kopie.
Mitmach-Aufgabe
Lege die Messwerte 10, 12 und 14 an. Füge 16 hinzu. Gib alle Werte nummeriert und anschließend den Mittelwert aus. Prüfe danach die Variante mit einer leeren Liste.
Versuche die Aufgabe zuerst selbst. Vergleiche danach deinen Ansatz mit der Musterlösung. Andere Lösungen sind möglich, wenn sie dieselben Anforderungen erfüllen.
Musterlösung
werte = [10, 12, 14]
werte.append(16)
for nummer, wert in enumerate(werte, start=1):
print(f"{nummer}: {wert}")
if len(werte) > 0:
print(f"Mittelwert: {sum(werte) / len(werte):.1f}")
else:
print("Keine Werte vorhanden")
Ergebnis prüfen
Vier nummerierte Werte und der Mittelwert 13.0. Für den Leerlisten-Test setze werte = [] und lasse auch append() weg; dann erscheint nur „Keine Werte vorhanden“.
Typische Stolperstellen
Ein Zugriff auf werte[len(werte)] liegt außerhalb der Liste. Schreibe nicht werte = werte.append(16): append verändert die Liste und gibt None zurück.
Was du jetzt kannst
- Listen anlegen und indizieren.
- Append und remove einsetzen.
- Mit enumerate durchlaufen.
Passendes Cheatsheet
Zum Nachschlagen: Cheatsheet 07 – Listen, Tupel und Dictionaries. Dort findest du auch den vorhandenen PDF-Download.
Im nächsten Teil
In Teil 10 geht es um Dictionaries, Tupel und strukturierte Daten. Beschreibe Bauteile und Filamentrollen mit benannten Eigenschaften und unterscheide passende Datenstrukturen.
