In diesem Beitrag lernst du, was Python Tupel (bzw. auf Englisch Python Tuple) sind und wie diese funktionieren.
Wer sich mit ein wenig mit Python auskennt, weiß sicher, was Listen in Python sind. Falls nicht weißt wie Listen in Python funktionieren, kannst du es in diesem Python-Tutorial lernen.
Neben den Listen bietet Python aber noch weitere Strukturen, die sich für die Aufnahme von Daten eignen. Ein Beispiel hierfür ist das Python Tupel. Dieses kann, genau wie eine Liste, beliebig viele einzelne Informationen unterschiedlichen Typs aufnehmen. Um ein Tupel zu erstellen, musst du beinahe genau gleich vorgehen, wie bei einer Liste. Lediglich die eckigen Klammern musst du dabei durch eine runde Klammer ersetzen. Alternativ dazu kannst du die Klammern auch ganz weglassen:
meinTupel = (3,6,9)
oder:
meinTupel = 3,6,9
Der Zugriff auf einen Eintrag im Tupel läuft ebenfalls identisch ab wie bei einer Liste – über den sogenannten Index. Auch hierbei ist es möglich, über den Doppelpunkt (:
) verschiedene Teilbereiche des Tupels abzurufen – so wie bei den Listen. Das nennt man String Slicing. Wie genau es funktioniert, kannst du hier nachlesen.
Einträge zum Python Tupel hinzufügen
Wenn du einen Wert zu einem Tupel hinzufügen willst, dann ist das wie bei Listen durch das Pluszeichen (+
) möglich. Allerdings musst du darauf achten, dass es sich bei den Werten, die du hinzufügen willst, ebenfalls um Tupel handeln muss. Wie du in Python Tupel aus mehreren Werten erstellst, hast du bereits im oberen Beispiel gesehen. Wenn nur ein einziger Wert enthalten sein bzw. hinzugefügt werden soll, dann musst du nach dem Eintrag ein Komma (,
) hinzufügen, um die Datenstruktur als Tupel zu kennzeichnen. Dabei kannst du den Wert in Klammern schreiben oder ihn ohne Klammern angeben:
meinTupel += (8,)
oder:
meinTupel += 8,
Werte eines Tupels sind unveränderbar
Bislang scheinen Tupel in Python genau gleich zu funktionieren wie Listen. Dass es dabei einen wesentlichen Unterschied gibt, erkennst du jedoch, wenn du einen Eintrag eines Tupels ändern willst. Um das zu verdeutlichen, soll nun der Versuch unternommen werden, dabei auf die gleiche Weise wie bei einer Liste vorzugehen – indem man einem Feld über dessen Index einen neuen Wert zuweist:
meinTupel[1] = 12
Probiere es aus und erzeuge zunächst das Tupel wie oben beschrieben und füge dann den Befehl ein. Dabei erhältst du eine Fehlermeldung. Das liegt daran, dass sich Python Tupel dadurch auszeichnen, dass sie unveränderlich sind. Wenn du einmal einen Wert eingibst, dann bleibt dieser bis zum Ende des Programms gleich. Daher eignet sich diese Datenstruktur immer dann, wenn die Werte unveränderlich bleiben.
Wenn beispielsweise ein Händler sein Sortiment in einem Programm erfasst, dann bieten sich Tupel für Daten wie den Produkttyp an. Dieser ist unveränderlich, da aus einem Teller nicht plötzlich eine Tasse oder ein Topf wird. Für veränderliche Daten wie den Preis oder die vorrätigen Artikel ist dieser Datentyp jedoch nicht geeignet, hier würde man Listen verwenden.
Manchmal kommt es vor, dass der größte Teil der Daten unveränderlich ist, sodass es sinnvoll wäre, Tupel zu verwenden. Das sorgt für eine bessere Performance und schützt die Daten vor unbeabsichtigten Veränderungen. Sobald aber nur ein einzelner Wert auftauchen sollte, den du verändern willst, ist das bei Tupeln per Definition nicht mehr möglich.
Allerdings gibt es einen Trick, wie du auch Daten in einem Python Tupel verändern kannst: indem du sie in eine Liste verpackst. Wenn ein Tupel eine Datenstruktur mit veränderlichen Werten enthält, kannst du die Einträge modifizieren.
Um beim vorherigen Beispiel zu bleiben: Wenn du das Sortiment erfassen willst, kannst du den Produkttyp einfach in das Tupel schreiben. Für den Preis erzeugst du eine Liste mit nur einem Feld:
meinProdukt = ("Teller", [2.99]) print(meinProdukt) meinProdukt[1][0] = 3.49 print(meinProdukt)
Für den Zugriff auf den Wert musst du in diesem Fall zunächst den Index im Tupel und dann den Index in der Liste angeben. Das Tupel ist die übergeordnete Struktur. Es enthält zwei Werte. Der Zugriff soll auf den zweiten Wert erfolgen – daher der Index 1
. Die Liste hat nur einen einzigen Wert, daher der Index 0
.
Wenn du dieses Programm nun ausführst, erkennst du, dass sich der Wert problemlos verändern lässt.
Tupel bieten außerdem den Vorteil, dass sie bei der Verarbeitung eine etwas bessere Performance bieten als Listen. Wenn du sehr große Datenmengen bearbeitest, bei denen eine hohe Rechenkapazität notwendig ist, bietet es sich daher an, wenn möglich Tupel statt Listen zu verwenden.
(Auszug aus dem Python Komplettkurs)