Tupel – und der Unterschied zu Variablen und Listen
Wir haben bereits Variablen und Listen kennengelernt. Man fragt sich nun natürlich nach dem Unterschied zwischen Variablen und Listen im Vergleich zu Tupeln in Python.
Unterschied Variablen und Listen:
- Variable speichert einen Inhalt
- Liste speichert VIELE Inhalte (bzw. kann das)
Und was ist ein Tupel? Eigentlich eine Liste aber der wichtige Unterschied ist, dass der Inhalt eines Tupels NICHT änderbar ist. Daher sind Tupel besonders geeignet, um Konstanten zu verkörpern.
Um unsere Auflistung von oben zu komplementieren:
- Variable speichert einen Inhalt
- Liste speichert VIELE Inhalte (bzw. kann das)
- Tupel speichern VIELE Inhalte UNVERÄNDERLICH
Der Sinn hinter UNVERÄNDERLICH (nicht löschbar) bei Tupels
Warum macht das „unveränderlich“ überhaupt Sinn? Genau dann, wenn gespeicherte Werte nur zusammen Sinn ergeben! Als Beispiel ist es einfacher nachvollziehbar. Wir wollen Werte für ein 2D-Koordinatensystem speichern. Dazu benötigen wir den X-Wert und den Y-Wert. Als könnten wir hier ein Tupel bilden mit punkt1 = (10, 22)
. Der erste Wert stellt den X-Wert dar, der zweite Wert den Y-Wert. Gäbe es nur einen Wert (egal ob X oder Y) wären diese Daten sinnlos. Wir wollen also nicht, dass einer der Daten gelöscht werden kann!
Tupel in Python erstellen
Üblicherweise wird ein Tupel durch runde Klammern erstellt:
tupel = ('wert1', 'wert2')
Technisch möglich ist es auch ohne Klammern – aber erstens unüblich und zweitens für den typischen Python-Programmierer irritierend.
tupel = 'wert1', 'wert2'
type(tupel)
Und hat man ein Tupel mit nur einem einzigen Element ist das Komma am Schluss wichtig! Einfach mal folgenden Code testen:
inhaltA = ('wert1',)
inhaltB = ('wert2')
type(inhaltA)
type(inhaltB)
Warum wir überhaupt Tupel nutzen sollen ist anhand der obigen Beispiele wenig einsichtig. Wie gesagt, Tupel sind die Speicherform von unveränderbaren Daten – was man in anderen Programmiersprachen als Konstanten bezeichnet. Solche Daten wäre z.B. Name
personl = ('Elke', 'Maier', '1985')
Zugriff auf Werte in einem Tupel
Der Zugriff und die Möglichkeiten sind gleich wie bei der Liste. Ich kann gezielt auf einen bestimmten Inhalt zugreifen:
tupel = ('wert1', 'wert2', 'wert3', 'wert4', 'wert5')
print (tupel[0])
Über die eckigen Klammern greife ich per Index auf den entsprechenden Wert zu. Auch wie bei Listen startet der Index bei 0!
Ich kann auch mehrere Werte anhand von „von – bis“ auswählen:
tupel = ('wert1', 'wert2', 'wert3', 'wert4', 'wert5')
print (tupel[2:4])
Wir erhalten als Ergebnis: