Skip to content

Kapitel 9: Listen und Tupel

🎯 Lernziele

In diesem Kapitel lernst du:

  • Listen erstellen und bearbeiten
  • Auf Listenelemente zugreifen
  • Listenmethoden verwenden
  • Tupel erstellen (unveränderlich)
  • Unterschied zwischen Listen und Tupeln

9.1 Listen (list)

📋 Liste erstellen

python
# Liste mit eckigen Klammern
früchte = ["Apfel", "Banane", "Orange"]
zahlen = [1, 2, 3, 4, 5]
gemischt = ["Python", 25, True, 3.14]

print(früchte)    # ['Apfel', 'Banane', 'Orange']
print(gemischt)   # ['Python', 25, True, 3.14]

🔢 Auf Elemente zugreifen (Index)

python
früchte = ["Apfel", "Banane", "Orange"]

# Positiver Index (von 0 beginnend)
print(früchte[0])  # Apfel
print(früchte[1])  # Banane
print(früchte[2])  # Orange

# Negativer Index (von -1 beginnend)
print(früchte[-1]) # Orange (letztes Element)
print(früchte[-2]) # Banane
print(früchte[-3]) # Apfel

✏️ Listenelemente ändern

python
früchte = ["Apfel", "Banane", "Orange"]

# Element ändern
früchte[0] = "Birne"
print(früchte)  # ['Birne', 'Banane', 'Orange']

# Mehrere Elemente ändern (Slicing)
früchte[0:2] = ["Traube", "Erdbeere"]
print(früchte)  # ['Traube', 'Erdbeere', 'Orange']

➕ Elemente hinzufügen

python
früchte = ["Apfel", "Banane"]

# append() - an Ende hinzufügen
früchte.append("Orange")
print(früchte)  # ['Apfel', 'Banane', 'Orange']

# insert() - an bestimmter Position einfügen
früchte.insert(1, "Traube")
print(früchte)  # ['Apfel', 'Traube', 'Banane', 'Orange']

# extend() - Liste erweitern
früchte2 = ["Erdbeere", "Birne"]
früchte.extend(früchte2)
print(früchte)  # ['Apfel', 'Traube', 'Banane', 'Orange', 'Erdbeere', 'Birne']

➖ Elemente entfernen

python
früchte = ["Apfel", "Banane", "Orange", "Banane"]

# remove() - erstelles Vorkommen entfernen
früchte.remove("Banane")
print(früchte)  # ['Apfel', 'Orange', 'Banane']

# pop() - an Index entfernen (Standard: letztes)
entfernt = früchte.pop()  # Entfernt 'Banane'
print(früchte)      # ['Apfel', 'Orange']
print(entfernt)     # Banane

entfernt = früchte.pop(0)  # Entfernt an Index 0
print(früchte)      # ['Orange']
print(entfernt)     # Apfel

# del - löschen mit Index
del früchte[0]
print(früchte)  # []

# clear() - alle Elemente löschen
früchte.clear()
print(früchte)  # []

🔍 Suchen und Sortieren

python
zahlen = [5, 2, 8, 1, 9]

# index() - Index eines Elements finden
print(zahlen.index(8))  # 2

# count() - Häufigkeit zählen
zahlen = [1, 2, 3, 2, 4, 2]
print(zahlen.count(2))  # 3

# sort() - sortieren (in-place)
zahlen.sort()
print(zahlen)  # [1, 2, 2, 2, 3, 4]

# reverse() - umkehren
zahlen.reverse()
print(zahlen)  # [4, 3, 2, 2, 2, 1]

# sorted() - sortieren (neue Liste)
zahlen = [5, 2, 8, 1, 9]
zahlen_sortiert = sorted(zahlen)
print(zahlen)            # [5, 2, 8, 1, 9] (original)
print(zahlen_sortiert)   # [1, 2, 5, 8, 9] (neu)

✂️ Liste-Slicing

python
zahlen = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# Slicing
print(zahlen[2:5])    # [2, 3, 4]
print(zahlen[:5])      # [0, 1, 2, 3, 4]
print(zahlen[5:])      # [5, 6, 7, 8, 9]
print(zahlen[::2])     # [0, 2, 4, 6, 8] (jedes 2.)
print(zahlen[::-1])    # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] (umgekehrt)

💡 Praxisbeispiel: Studentenverwaltung

python
# Studentenliste
studenten = []

# Hinzufügen
studenten.append({"name": "Max", "alter": 20})
studenten.append({"name": "Anna", "alter": 22})
studenten.append({"name": "Tom", "alter": 19})

# Anzeigen
print("Alle Studenten:")
for s in studenten:
    print(f"  - {s['name']} ({s['alter']} Jahre)")

# Entfernen
studenten.remove({"name": "Tom", "alter": 19})
print("\nNach Entfernung:")
for s in studenten:
    print(f"  - {s['name']} ({s['alter']} Jahre)")

9.2 Tupel (tuple)

🔒 Tupel erstellen (unveränderlich!)

python
# Tupel mit runden Klammern
punkt = (10, 20)
farben = ("rot", "grün", "blau")
einzeln = (42,)  # Komma wichtig bei einzeiligem Tupel!

print(punkt)   # (10, 20)
print(farben)  # ('rot', 'grün', 'blau')
print(einzeln) # (42,)

# Tupel ohne Klammern (implizit)
koordinaten = 10, 20
print(koordinaten)  # (10, 20)

🔢 Auf Elemente zugreifen

python
punkt = (10, 20, 30)

# Genau wie bei Listen
print(punkt[0])  # 10
print(punkt[-1]) # 30

# Slicing funktioniert auch
print(punkt[0:2])  # (10, 20)

❌ Tupel können NICHT geändert werden!

python
punkt = (10, 20, 30)

# punkt[0] = 15  # TypeError! Tupel sind unveränderlich!

# Arbeitaround: Neues Tupel erstellen
punkt = (15,) + punkt[1:]
print(punkt)  # (15, 20, 30)

🎯 Wann Tupel verwenden?

  • ✅ Daten, die sich nicht ändern sollten (z.B. Koordinaten)
  • ✅ Als Schlüssel in Wörterbüchern (Listen können nicht als Schlüssel verwendet werden)
  • ✅ Mehrere Werte aus Funktionen zurückgeben
python
# Beispiel: Koordinaten
koordinaten = (10, 20)
x, y = koordinaten  # Entpacken (Unpacking)
print(f"x={x}, y={y}")  # x=10, y=20

📦 Tupel-Entpacken (Unpacking)

python
# Einfaches Entpacken
punkt = (10, 20)
x, y = punkt
print(x, y)  # 10 20

# Mit Funktionen
def get_min_max(zahlen):
    return min(zahlen), max(zahlen)

zahlen = [5, 2, 8, 1, 9]
minimum, maximum = get_min_max(zahlen)
print(f"Min: {minimum}, Max: {maximum}")  # Min: 1, Max: 9

9.3 Listen vs. Tupel

EigenschaftListe (list)Tupel (tuple)
Erstellng[]()
Veränderlich✅ Ja❌ Nein
MethodenViele (append, remove, ...)Wenige
GeschwindigkeitLangsamerSchneller
SpeicherMehrWeniger
Als Dict-Schlüssel❌ Nein✅ Ja
python
# Liste (veränderlich)
liste = [1, 2, 3]
liste[0] = 100  # Erlaubt
print(liste)  # [100, 2, 3]

# Tupel (unveränderlich)
tupel = (1, 2, 3)
# tupel[0] = 100  # TypeError!

⚠️ Häufige Fehler

❌ Fehler 1: Index außerhalb des Bereichs

python
früchte = ["Apfel", "Banane"]
# print(früchte[5])  # IndexError!

# Lösung: Länge prüfen
if len(früchte) > 5:
    print(früchte[5])

❌ Fehler 2: Tupel-Element ändern

python
tupel = (1, 2, 3)
# tupel[0] = 10  # TypeError!

# Lösung: Neues Tupel erstellen
tupel = (10,) + tupel[1:]

❌ Fehler 3: Listemethoden verwechseln

python
früchte = ["Apfel", "Banane"]

# Falsch: append() gibt None zurück
# neue_liste = früchte.append("Orange")  # neue_liste ist None!

# Richtig
früchte.append("Orange")
print(früchte)

📝 Zusammenfassung

In diesem Kapitel hast du gelernt:

  • ✅ Listen zu erstellen und zu bearbeiten
  • ✅ Elemente hinzuzufügen (append, insert, extend)
  • ✅ Elemente zu entfernen (remove, pop, del, clear)
  • ✅ Listen zu sortieren und zu suchen
  • ✅ Liste-Slicing zu verwenden
  • ✅ Tupel zu erstellen (unveränderlich)
  • ✅ Tupel zu entpacken (Unpacking)
  • ✅ Unterschied zwischen Listen und Tupeln

🎯 Übung

  1. Erstelle eine Einkaufsliste und füge 5 Artikel hinzu
  2. Entferne ein Element aus der Liste
  3. Sortiere die Liste alphabetisch
  4. Erstelle ein Tupel mit deinen Lieblingszahlen
  5. Entpacke ein Tupel in mehrere Variablen

⏭️ Nächstes Kapitel

In Kapitel 10 lernen wir Wörterbücher und Mengen - weitere wichtige Datentypen!

Frei für alle Anfänger