Tupel in Python ermöglichen es, mehrere Werte oder Variablen in einem eigenen Behälter unveränderlich zu sammeln.
Tupel sind schneller und kleiner als Listen, allerdings kann man ihre Inhalte nach der Erstellung nicht bearbeiten.
Es gibt zwei Möglichkeiten, um ein Tupel zu erstellen.
tupel = "a", 2, True
print(tupel)
### Output:
>> ('a', 2, True)
tupel = ("a", 2, True)
print(tupel)
### Output
>> ('a', 2, True)
Möchten wir nur einen Wert aus dem Tupel ausgeben, schreiben wir hinter dem Tupel eckige Klammern und die Indexstelle des Tupels:
benutzerdaten = ("xXDeStRoYeR2009Xx", "passwort123", "[email protected]")
print(benutzerdaten[0])
print(benutzerdaten[2])
### Output:
>> xXDeStRoYeR2006Xx
>> [email protected]
Eine der häufigsten Anwendungsfälle von Tupeln ist es, die Inhalte Variablen zuzuordnen. Damit können wir mit einer Zeile Code gleich mehrere Werte mehreren Variablen zuordnen. Im Code listen wir unsere Variablennamen mit Kommata getrennt auf und setzen sie mit unserem Tupel gleich.
Im folgenden Beispiel haben wir ein Tupel mit 3 meiner Würfelversuche in Mensch ärgere dich nicht. Ich habe gerade eine 4, dann eine 2 und dann eine 5 gewürfelt. Ich will diese Werte in eine Datenbank eintragen und später in Korrelation mit meinen Wutanfällen setzen:
versuch_1, versuch_2, versuch_3 = (4, 2, 5)
print(versuch_1)
print(versuch_2)
print(versuch_3)
### Output:
>>> 4
>>> 2
>>> 5
Diese Methode ist deutlich angenehmer und kürzer zu coden als 3 Zeilen mit Zuordnungen der Inputs.
Wenn wir ein Tupel mit einem Element einer Variablen zuordnen möchten, wird uns auffallen, dass das Tupel zum String umgewandelt wird:
var = ("a")
print(var)
### Output:
>>> a
Das liegt wie bereits erklärt daran, dass wir gleich viele
Tupeleinträge haben wie Variablen. Um diesen einzelnen Tupel nicht als Variable
sondern als Tupel zu speichern, müssen wir nach dem Wert ein Komma setzen:
var = ("a",)
print(var)
### Output:
>>> ('a',)
Tupel benötigen weniger Speicherplatz als Listen. Das kann man ganz einfach nachweisen, indem man in Python ein Tupel und eine Liste mit identischen Werten füllt und daraufhin die Byte-Größe abfragt:
from sys import getsizeof
tupel = (0,1,2,1.5,3.33,7.77,"a","b","c","abc",True,False)
liste = [0,1,2,1.5,3.33,7.77,"a","b","c","abc",True,False]
print("Tupel Byte-Größe:", getsizeof(tupel))
print("Liste Byte-Größe:", getsizeof(liste))
### Output:
>>> Tupel Byte-Größe: 144
>>> Liste Byte-Größe: 160
Insbesondere bei sehr großen Datensätzen kann das wesentlich für die Performance von Datenanalysen sein.
Dieser Vorteile sind allerdings auch mit Nachteilen gegenüber Listen verbunden:
Innerhalb von Listen kann man Daten verändern, hinzufügen, entfernen, umsortieren und viel mehr. Tupel sind dagegen unveränderlich.