Appearance
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: 99.3 Listen vs. Tupel
| Eigenschaft | Liste (list) | Tupel (tuple) |
|---|---|---|
| Erstellng | [] | () |
| Veränderlich | ✅ Ja | ❌ Nein |
| Methoden | Viele (append, remove, ...) | Wenige |
| Geschwindigkeit | Langsamer | Schneller |
| Speicher | Mehr | Weniger |
| 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
- Erstelle eine Einkaufsliste und füge 5 Artikel hinzu
- Entferne ein Element aus der Liste
- Sortiere die Liste alphabetisch
- Erstelle ein Tupel mit deinen Lieblingszahlen
- Entpacke ein Tupel in mehrere Variablen
⏭️ Nächstes Kapitel
In Kapitel 10 lernen wir Wörterbücher und Mengen - weitere wichtige Datentypen!
