Python-Tupel meistern: Erstellung, Zugriff und fortgeschrittene Operationen
Python-Tupel
Entdecken Sie die Stärke von Tupeln in Python – unveränderliche Sequenzen, die Geschwindigkeit, Sicherheit und Vielseitigkeit für heterogene Daten bieten. Dieser Leitfaden deckt alles ab, von der Grundsyntax bis zu fortgeschrittenen Operationen, damit Sie verstehen, wann Sie Tupel gegenüber Listen wählen sollten.
Video: Python-Listen und Tupel
Ein Tupel verhält sich wie eine Liste, ist aber einmal erstellt unveränderlich. Im Gegensatz zu Listen können Sie seine Elemente nicht ändern, was Tupel ideal für feste Datensätze macht.
Tupel erstellen
Tupel werden definiert, indem kommagetrennte Werte in Klammern () gesetzt werden. Zwar sind Klammern optional, sie verbessern jedoch die Lesbarkeit.
Tupel können beliebig viele Elemente enthalten und Datentypen mischen – Ganzzahlen, Floats, Strings, Listen, andere Tupel usw.
# Verschiedene Arten von Tupeln
# Leeres Tupel
my_tuple = ()
print(my_tuple)
# Tupel mit Ganzzahlen
my_tuple = (1, 2, 3)
print(my_tuple)
# Gemischte Datentypen
my_tuple = (1, "Hallo", 3.4)
print(my_tuple)
# Verschachteltes Tupel
my_tuple = ("Maus", [8, 4, 6], (1, 2, 3))
print(my_tuple)
Ausgabe
() (1, 2, 3) (1, 'Hallo', 3.4) ('Maus', [8, 4, 6], (1, 2, 3))
Tupel können auch ohne Klammern erstellt werden – eine Technik, die als Tupel-Packing bekannt ist.
my_tuple = 3, 4.6, "Hund"
print(my_tuple)
# Tupel-Unpacking
a, b, c = my_tuple
print(a)
print(b)
print(c)
Ausgabe
(3, 4.6, 'Hund') 3 4.6 Hund
Wenn ein Tupel ein einzelnes Element enthält, ist ein nachfolgendes Komma erforderlich, um es von einem einfachen Wert zu unterscheiden.
my_tuple = ("hallo")
print(type(my_tuple)) # <class 'str'>
# Ein-Element-Tupel
my_tuple = ("hallo",)
print(type(my_tuple)) # <class 'tuple'>
# Klammern optional
my_tuple = "hallo",
print(type(my_tuple)) # <class 'tuple'>
Ausgabe
<class 'str'> <class 'tuple'> <class 'tuple'>
Auf Tupel-Elemente zugreifen
Tupel unterstützen mehrere Methoden für den Elementzugriff:
1. Indexierung
Verwenden Sie den Indexoperator [] mit nullbasierten Indizes. Zugriff außerhalb des Bereichs löst IndexError aus; nicht-ganzzahlige Indizes TypeError.
# Indexierungs-Beispiel
my_tuple = ('p','e','r','m','i','t')
print(my_tuple[0]) # 'p'
print(my_tuple[5]) # 't'
# Verschachtelte Indexierung
n_tuple = ("Maus", [8, 4, 6], (1, 2, 3))
print(n_tuple[0][3]) # 's'
print(n_tuple[1][1]) # 4
Ausgabe
p t s 4
2. Negative Indexierung
Negative Indizes zählen vom Ende: -1 ist das letzte Element.
# Negative Indexierung
my_tuple = ('p', 'e', 'r', 'm', 'i', 't')
print(my_tuple[-1]) # 't'
print(my_tuple[-6]) # 'p'
Ausgabe
t p
3. Slicing
Verwenden Sie die start:stop-Syntax, um Teil-Tupel zu extrahieren.
# Slicing-Beispiel
my_tuple = ('p','r','o','g','r','a','m','i','z')
print(my_tuple[1:4]) # ('r', 'o', 'g')
print(my_tuple[:-7]) # ('p', 'r')
print(my_tuple[7:]) # ('i', 'z')
print(my_tuple[:]) # vollständiges Tupel
Ausgabe
('r', 'o', 'g') ('p', 'r') ('i', 'z') ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')

Ein Tupel modifizieren
Tupel sind unveränderlich. Direkte Zuweisung an ein Element löst TypeError aus:
# Versuch der Modifikation
my_tuple = (4, 2, 3, [6, 5])
# my_tuple[1] = 9 # TypeError
Wenn ein Element jedoch selbst veränderlich ist (z. B. eine Liste), kann sich sein internes Zustand ändern:
my_tuple[3][0] = 9
print(my_tuple) # (4, 2, 3, [9, 5])
Tupel können vollständig einem neuen Wert zugewiesen werden:
my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
print(my_tuple)
Verwenden Sie + für Konkatenation und * für Wiederholung; beide geben ein neues Tupel zurück.
print((1, 2, 3) + (4, 5, 6)) # (1, 2, 3, 4, 5, 6)
print(("Wiederholen",) * 3) # ('Wiederholen', 'Wiederholen', 'Wiederholen')
Ausgabe
(1, 2, 3, 4, 5, 6) ('Wiederholen', 'Wiederholen', 'Wiederholen')
Ein Tupel löschen
Einzelne Elemente können nicht entfernt werden. Das gesamte Tupel kann mit del gelöscht werden:
my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
# del my_tuple[3] # TypeError
del my_tuple
# print(my_tuple) # NameError
Ausgabe
Traceback (most recent call last): File "<string>", line 12, in <module> NameError: name 'my_tuple' is not defined
Tupel-Methoden
Tupel stellen nur zwei eingebaute Methoden bereit: count() und index().
my_tuple = ('a', 'p', 'p', 'l', 'e')
print(my_tuple.count('p')) # 2
print(my_tuple.index('l')) # 3
Ausgabe
2 3
Weitere Tupel-Operationen
1. Mitgliedschaftstest
Prüfen Sie die Existenz mit dem Schlüsselwort in.
my_tuple = ('a', 'p', 'p', 'l', 'e')
print('a' in my_tuple)
print('b' in my_tuple)
print('g' not in my_tuple)
Ausgabe
True False True
2. Iteration
Schleifen Sie über Tupel mit for:
for name in ('John', 'Kate'):
print("Hallo", name)
Ausgabe
Hallo John Hallo Kate
3. Vorteile gegenüber Listen
- Ideal für heterogene Daten; Listen sind meist homogen.
- Unveränderlichkeit bietet einen Performance-Vorteil bei Iteration.
- Tupel, die nur unveränderliche Elemente enthalten, können als Dictionary-Keys dienen.
- Schreibgeschützte Daten sind garantiert und verhindern versehentliche Änderungen.
Python
- Python-Datentypen meistern: Praxisleitfaden
- Python-Operatoren meistern: Umfassender Leitfaden
- Python pass-Statement meistern: Praxisleitfaden
- Python-Funktionsargumente meistern: Positional, Keyword & Default-Parameter
- Python-Dictionaries meistern: Erstellung, Manipulation und fortgeschrittene Techniken
- Python Iteratoren meistern: Funktionsweise und Erstellung eigener Iteratoren
- Python Closures erklärt: Wie verschachtelte Funktionen Variablen erfassen
- Python datetime meistern: Praktischer Leitfaden zu Datumsangaben, Zeiten und Zeitzonen
- Python Überblick: Hochlevel, lesbar, interaktiv & objektorientiert
- Python Zahlen: Unveränderliche numerische Datentypen verstehen