- 1 Section
- 10 Lessons
- unbegrenzt
- Python Grundlagen10
- 1.1Python-Grundlagen: Installation, REPL, erstes Skript
- 1.2Variablen, Datentypen, Typumwandlung
- 1.3Kontrollstrukturen: if, elif, else
- 1.4Schleifen: for, while, range
- 1.5Listen, Tupel, Dictionaries, Sets
- 1.6Funktionen: def, Parameter, return
- 1.7Fehlerbehandlung: try-except-finally
- 1.8Strings: Methoden, Formatierung, f-Strings
- 1.9Dateien lesen und schreiben
- 1.10Praxisprojekt: Kleines Python-Programm von A bis Z
Listen, Tupel, Dictionaries, Sets
Eine einzelne Variable hält genau einen Wert. Aber sobald du mit echten Daten arbeitest, brauchst du Container die viele Werte zusammenhalten: eine Liste von Kunden, ein Wörterbuch mit Vokabeln, eine eindeutige Sammlung an Tags. Python hat dafür vier eingebaute Datenstrukturen: Listen, Tupel, Dictionaries und Sets. Die Wahl der richtigen Datenstruktur ist eine der wichtigsten Entscheidungen beim Programmieren – und Python macht sie dir leicht.
Wer aus Java kommt: Python-Listen sind nicht mit Java-Arrays vergleichbar – sie sind viel mächtiger (eher wie ArrayList). Und während du in Java für Maps und Sets extra-Klassen importieren musst, sind sie in Python eingebaut und haben elegante Spezial-Syntax.
1) Die vier Datenstrukturen im Überblick
Vergleichen wir sie nebeneinander – nach drei Achsen: wie deklariert man sie, was kann man drin speichern, und sind sie veränderbar?
Duplikate: ✓
Veränderbar: ✓
Indexiert: ✓
Wofür? Standard für Reihenfolge wichtig
Duplikate: ✓
Veränderbar: ✗
Indexiert: ✓
Wofür? Konstante Datensätze, Koordinaten
Duplikate: Keys: ✗
Veränderbar: ✓
Indexiert: per Key
Wofür? Schlüssel→Wert-Paare
Duplikate: ✗
Veränderbar: ✓
Indexiert: ✗
Wofür? Einzigartige Werte, Mengenlehre
2) Listen – die Allzweckwaffe
Eine Liste ist eine geordnete, veränderbare Sammlung. Du erstellst sie mit eckigen Klammern. Anders als in Java-Arrays kannst du verschiedene Typen mischen – wobei das in der Praxis selten gemacht wird:
Probier hier die wichtigsten Operationen aus – klick eine Methode und sieh wie sich die Liste ändert:
liste[start:stop:step] liefert eine Teilliste. liste[::-1] dreht eine Liste um. liste[1:4] liefert Elemente an Position 1, 2, 3 (stop nicht enthalten – wie bei range()). Slicing funktioniert auch mit Strings: "Python"[0:2] → "Py".3) Tupel – unveränderliche Listen
Tupel sehen aus wie Listen mit runden Klammern statt eckigen. Der entscheidende Unterschied: du kannst sie nach der Erstellung nicht mehr ändern. Versuchst du es, gibt's einen TypeError. Wofür ist das nützlich? Für Werte die unveränderlich sein sollen – z.B. Koordinaten (x, y), RGB-Farben (255, 128, 0), oder ganze Datensätze:
Eine besonders elegante Anwendung: Funktionen die mehrere Werte zurückgeben liefern eigentlich ein Tupel zurück, das man dann unpacken kann. Mehr dazu in Lektion 6 – Funktionen.
4) Dictionaries – Schlüssel-Wert-Paare
Ein Dictionary (kurz: dict) ist eine Sammlung von Schlüssel-Wert-Paaren. Statt mit einem Index (0, 1, 2, ...) greifst du mit einem Schlüssel (meist String) auf den Wert zu. Das entspricht der HashMap in Java oder einem JSON-Objekt in JavaScript:
d["unbekannt"] wirft einen KeyError. Sicherer: d.get("unbekannt") liefert None bei fehlendem Key – oder du gibst einen Default-Wert mit: d.get("unbekannt", "kein Wert"). Über ein dict iterieren: for k in d: liefert die Keys. for k, v in d.items(): liefert Key-Wert-Paare (oft kombiniert mit der enumerate-ähnlichen Technik aus Lektion 4).5) Sets – einzigartige Werte und Mengenoperationen
Ein Set ist eine Sammlung in der jeder Wert nur einmal vorkommt. Reihenfolge gibt es nicht. Wofür? Wenn du z.B. alle einzigartigen Wörter in einem Text finden willst, oder zwei Mengen vergleichst:
Sets sind besonders performant für die Frage „enthält die Sammlung Element X?" – das geht in fast konstanter Zeit, während eine Liste durchsucht werden muss. Wenn du nur diese Frage brauchst, ist Set die richtige Wahl. Mehr zur Performance in K39 – O-Notation.
6) Welche Struktur wofür? Eine Entscheidungshilfe
Die wichtigste Skill ist nicht die Syntax, sondern die richtige Datenstruktur zu wählen. Hier eine kurze Entscheidungshilfe:
| Wenn du brauchst... | Nimm | Beispiel |
|---|---|---|
| Geordnete Sammlung, veränderbar | list | Todo-Liste, Aufgaben-Queue, Schüler-Punkte |
| Feste Zusammenfassung von Werten | tuple | Koordinaten, RGB-Farbe, Datenbankzeile |
| Schnellzugriff per Name/Key | dict | Konfiguration, Wörterbuch, JSON-Daten |
| Eindeutige Werte, schnelle „enthält?"-Prüfung | set | Tag-Liste, eindeutige IDs, Mengen-Logik |
| 2D-Tabelle | list of lists | Spielfeld, Matrix, Tabellendaten |
| Komplexe Objekte mit Verhalten | Klasse | Siehe K41b OOP |
7) Verschachtelte Strukturen
Die richtige Power kommt durch Kombination. Eine Liste von Dictionaries ist eine sehr häufige Struktur – z.B. wenn du Daten aus einer Datenbank oder einer JSON-Datei liest:
Zusammenfassung
Vier eingebaute Datenstrukturen: list [ ] – geordnet, veränderbar, Standard. tuple ( ) – geordnet, unveränderbar. dict { k: v } – Schlüssel-Wert-Paare, key-basierter Zugriff. set { x, y } – einzigartige Werte, ungeordnet, schnelle „enthält?"-Prüfung. Listen: append, insert, pop, remove, sort, slicing mit [a:b:s]. Dicts: d[k], d.get(k, default), in, items(). Sets: |, &, -, ^ für Mengen-Operationen. Tuple-Unpacking: x, y = (1, 2). Verschachtelte Strukturen (Liste von Dicts) sind sehr häufig für reale Daten.
