Python für Anfänger · Teil 9TutorialEinsteiger

Python

Python für Anfänger – Teil 9: Listen und mehrere Messwerte

Verwalte mehrere Werte in einer Liste, verändere ihren Inhalt und berechne einfache Kennwerte.

Veröffentlicht am

3 Minuten Lesezeit

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.

← Teil 8 · Kursübersicht · Weiter zu Teil 10 →