Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter Entwicklung Zuletzt aktualisiert: September 24, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

Tupel ist ein eingebauter Datentyp in Python, der zum Speichern einer Sammlung von Daten verwendet wird. Er ist ähnlich wie eine Liste, aber etwas schneller.

Aufgrund seiner Einschränkungen sind Listen in manchen Situationen jedoch wünschenswerter. In diesem Artikel erkläre ich Ihnen alles, was Sie wissen müssen, um mit Tupeln arbeiten zu können.

Was ist ein Tupel?

Wie bereits erwähnt, ist ein Tupel einer der eingebauten Datentypen in Python, der zum Speichern von Datensammlungen verwendet wird. Es ähnelt einer Python-Liste, da es Daten in einem iterierbaren, array-ähnlichen Format speichert. Im Gegensatz zu einer Liste ist ein Tupel jedoch unveränderlich. Das heißt, einmal erstellt, können seine Werte nicht mehr geändert werden.

Es können keine weiteren Elemente hinzugefügt und bestehende Elemente nicht entfernt werden. Ein Tupel ist daher ideal für die Speicherung von Daten, die sich nicht ändern. Es kann sogar eine Sammlung von Daten verschiedener Typen sein. Im nächsten Abschnitt werden wir die verschiedenen Möglichkeiten zur Erstellung von Tupeln in Python besprechen.

Wie erstellt man ein Tupel in Python?

Es gibt mindestens drei Möglichkeiten, Tupel in Python zu erstellen. In diesem Abschnitt werden wir drei der gängigsten Methoden behandeln, die Sie wahrscheinlich verwenden werden und die Sie beim Lesen von Code von anderen sehen.

Um die folgenden Codebeispiele auszuführen, müssen Sie Python installiert haben. Wenn Sie Python noch nicht installiert haben, finden Sie hier eine hilfreiche Anleitung zur Installation von Python. Alternativ können Sie Ihren Code auch in einer Online-Python-Laufzeitumgebung wie Google Colab ausführen.

#1. Die Verwendung des Tupel-Literal (Klammern)

Die häufigste Art, Tupel in Python zu definieren, besteht darin, eine Sammlung von Werten zwischen Klammern zu setzen. Diese Werte werden durch Kommas getrennt. Das folgende Beispiel veranschaulicht diese Methode:

# Erzeugt ein Tupel, indem Werte zwischen Klammern gesetzt werden
values = (1, 2, 3)

# Druckt das Tupel auf dem Bildschirm aus
print(values)

# Druckt den Typ der Variablen values aus
print(type(values))

Wenn Sie diesen Code ausführen, erhalten Sie das folgende Ergebnis:

Ein Beispiel für die Erstellung von Tupeln mit dem Tupel-Literal in Python

Wie Sie an der Ausgabe sehen können, enthält das Tupel die Werte, mit denen wir es initialisiert haben. Außerdem ist es vom Typ <Klasse 'tuple'>.

Wenn Sie in Python Tupel erstellen, sind Klammern nicht notwendig. Daher ist dies Werte = 1, 2, 3 genauso gültig wie dieses Werte = (1, 2, 3). Es ist jedoch empfehlenswert, Klammern zu verwenden, um Ihren Code verständlicher zu machen.

Die Erstellung von Tupeln mit einem Element in Python ist ein wenig knifflig. Anstatt nur ein Element zwischen Klammern zu setzen, müssen Sie auch ein Komma am Ende hinzufügen. Hier ist ein Beispiel zur Veranschaulichung:

#
not_a_tuple = (1)

# Mit nachgestelltem Komma wird ein Tupel erzeugt
a_tuple = (1,)

# Drucken von not_a_tuple
print(not_a_tuple)

# Drucken des Datentyps von not_a_tuple
print(type(not_a_tuple))

# Drucken von a_tuple
print(a_tuple)

# Drucken des Datentyps von a_tuple
print(type(a_tuple))
336shots_so

Wenn Sie den obigen Code ausführen, werden Sie sehen, dass not_a_tuple ein int mit dem Wert 1 wird. Dies ist wichtig, wenn Sie Tupel erstellen.

#2. Verwendung der Konstruktor-Funktion

Die zweite Methode zur Erstellung von Tupeln in Python verwendet die Tupel-Konstruktorfunktion. Bei dieser Methode rufen Sie die Funktion auf und übergeben ein iterierbares Objekt wie eine Liste als Argument. Dieses wird dann in ein Tupel umgewandelt. Hier ist ein Beispiel:

# Erstellen eines Tupels aus einer Liste von Werten
values = tuple([1, 2, 3])

# Ausdrucken der Werte
print(values)

# Ausdrucken des Datentyps der Werte-Kennung
print(type(values))
893shots_so

Wie Sie sehen, erzielen Sie mit der Funktion das gleiche Ergebnis wie mit dem Literal. Mit der Funktion können Sie jedoch ein Tupel erstellen, das auf einem dynamischen Wert basiert, z.B. einer Liste, deren Werte nur zur Laufzeit bekannt sind. Bei der ersten Methode müssten Sie die Werte oder Bezeichner, aus denen Ihr Tupel besteht, beim Schreiben des Codes kennen.

#3. Ein leeres Tupel erstellen

Wenn Sie in Ihrem Code mit Tupeln arbeiten, müssen Sie möglicherweise leere Tupel erstellen. Leere Tupel werden so erstellt, wie Sie es erwarten würden. Sie können entweder den Tupel-Konstruktor oder das Literal to verwenden, um sie zu erstellen. Das folgende Beispiel zeigt, wie Sie beide Methoden verwenden können:

# Mit dem Tupel-Literal
empty_tuple_1 = ()

# Mit dem Konstruktor
empty_tuple_2 = tuple()

Leere Tupel sind nützlich, wenn Sie eine leere Ergebnismenge darstellen wollen. Betrachten Sie die folgende Funktion:

def create_range(start, end):
 return tuple(range(start, end))

Diese Funktion erstellt ein Tupel mit Werten von Anfang bis zum übergebenen Endwert. Wenn Sie über die Ergebnisse der Funktion iterieren möchten, sollten Sie etwas wie das Folgende verwenden:

my_values = create_range(0, 5)

for value in my_values:
 pass

Wenn Sie der Funktion create_range 5 und 5 übergeben würden, wäre das Ergebnis ein leeres Tupel. Und wenn Sie versuchen würden, darüber zu iterieren, hätten Sie einfach null Iterationen und Ihr Code würde wie gewohnt weiterlaufen.

Wenn es jedoch keine leeren Tupel gibt und Sie stattdessen den Wert None erhalten, würde der Versuch, darüber zu iterieren, einen Fehler auslösen. Um einen Absturz des Programms zu verhindern, müssten Sie einen Test für den Grenzfall implementieren, dass die Funktion create_range den Wert None oder einen anderen Wert zurückgibt, der ein leeres Tupel darstellt.

Dies würde zu unübersichtlichem Code führen. Idealerweise sollten Sie Sonderfälle so weit wie möglich vermeiden wollen. Das bedeutet, dass der Rückgabewert aller Funktionen eine identische Schnittstelle haben sollte, damit Ihr Code im allgemeinen Fall so gut wie möglich funktioniert. In diesem Fall bedeutet das, dass immer ein Tupel zurückgegeben wird, auch wenn es manchmal leer ist.

Wie man auf Elemente zugreift

Es gibt zwei Möglichkeiten, in Python auf die Elemente eines Tupels zuzugreifen. Die erste Methode ist der Zugriff über den Index, die zweite die Destrukturierung der Elemente. Zunächst werden wir untersuchen, wie Sie auf Elemente über den Index zugreifen können.

Zugriff auf Elemente über den Index

Der Zugriff auf Elemente über den Index ist ähnlich wie der Zugriff auf Listenelemente über den Index. Dabei wird die Notation in eckigen Klammern verwendet. Tupel verwenden ein auf Null basierendes Indexierungssystem, d.h. das erste Element hat den Index 0 und das folgende Element den Index 1 bis zum letzten Element.

Das folgende Beispiel zeigt, wie Sie auf Elemente über den Index zugreifen können:

# Erstellen eines Tupels
values = (1, 2, 3, 4)

# Zugriff auf das erste Element
first_element = values[0]

# Zugriff auf das vierte Element (Index 3)
fourth_element = values<x>[3]</x>

Sie können auch eine negative Indizierung verwenden. Das Element mit dem Index -1 ist das letzte Element und das Element mit dem Index -2 ist das zweitletzte Element.

# Erstellen des Tupels
values = (1, 2, 3, 4)

# Zugriff auf das letzte Element
last_element = values[-1]

# Zugriff auf das vorletzte Element
second_from_last_element = values[-2] 

Darüber hinaus können Sie auch auf Untersammlungen von Elementen aus einem Tupel zugreifen, indem Sie es aufteilen. Das ist ähnlich, wie wenn Sie eine Liste aufteilen würden. Die Notation lautet wie folgt <tuple>[<start>: <end>: <skip>]. Das folgende Beispiel demonstriert die Aufteilung:

# Erstellen des Tupels
values = (1, 2, 3, 4, 5, 6, 7)

# Abrufen der ersten drei Elemente
values[1: 3]

# Abrufen jedes anderen Elements
values[::2]

Iteration über Elemente

Ein Tupel ist in Python ein iterierbares Objekt. Daher können Sie mit einer for-Schleife über seine Elemente iterieren, wie im folgenden Beispiel gezeigt:

values = (1, 2, 3, 4)

for value in values:
 print(value)

Diese Methode des Zugriffs auf Elemente ist ideal, wenn Sie auf alle Elemente des Tupels zugreifen möchten.

Zugriff auf Elemente durch Destrukturierung

Um die Destrukturierung zu erklären, betrachten wir das folgende Szenario, in dem wir versuchen, die verschiedenen Elemente in einem Tupel zu erhalten.

#
person_record = (1, 'John Doe', 'john@example.com')

# Zugriff auf die verschiedenen Elemente im Tupel zur Verwendung in unserem Code
id = person_record[1]
name = person_record[2]
email = person_record<x>[3]</x>

Mit Python können wir eine bequemere Methode für den Zugriff auf die Werte verwenden, wie unten dargestellt:

# Erstellen des Tupels, um die Informationen eines Benutzers zu speichern
person_record = (1, 'John Doe', 'john@example.com')

id, name, email = person_record

Dies wird Destrukturierung genannt. Das heißt, die erste Variable, in diesem Fall idwird dem ersten Wert im Tupel zugewiesen und die zweite Variable dem zweiten Element. So geht es weiter bis zum Ende des Tupels. Das obige Beispiel entspricht dem hier:

id, name, email = (1, 'John Doe', 'john@example.com')

In diesem Fall speichern wir das Tupel nicht in einer Variablen, sondern wir destrukturieren es sofort. Wenn Sie dies mit dem Wissen kombinieren, dass Sie bei der Erstellung von Tupeln keine Klammern verwenden müssen, dann können Sie den Code wie folgt schreiben.

id, name, email = 1, 'John Doe', 'john@example.com'

Am Ende dieses Vorgangs haben Sie die Variablen id, name und email mit den Werten 1, 'John Doe' und 'john@example.com'. Dies ist eine bequeme und prägnante Art, Variablen in Python zu erstellen, die Sie im Produktionscode sehen werden. Es ist hilfreich zu wissen, dass das Herzstück dieser eleganten Syntax das Konzept der Tupel ist.

Unterschiede zwischen Tupel und Liste

Obwohl die beiden ähnlich sind, gibt es doch einige wichtige Unterschiede, die sie für einen bestimmten Anwendungsfall besser geeignet machen. Wenn Sie diese Unterschiede verstehen, können Sie sich für den besten Datentyp entscheiden und besseren und effizienteren Code schreiben.

AspektTupelListe
SpeicherungIm zusammenhängenden Speicher gespeichertSpeicherung in verschiedenen Teilen des Speichers
VeränderlichkeitUnveränderlich (kann nicht geändert werden)Veränderlich (kann geändert werden)
GeschwindigkeitDer Zugriff ist schnellerDer Zugriff ist langsamer
DatentypSpeichert normalerweise Daten unterschiedlichen TypsSpeichert in der Regel Daten desselben Typs
AnwendungsfälleWird normalerweise verwendet, um eine Sammlung ähnlicher Werte zu speichern, wie z.B. Marken.Wird normalerweise verwendet, um eine Sammlung ähnlicher Werte zu speichern, wie z.B. Marken.

Vorteile eines Tupels

#1. Es ist schneller

Da die Werte eines Tupels in einem zusammenhängenden Speicher gespeichert werden, ist der Zugriff auf die Werte schneller als bei einer Liste. Da Tupel jedoch nach ihrer Erstellung nicht mehr geändert werden können, sind sie nicht immer die beste Datenstruktur für die Speicherung von Wertesammlungen.

Ihr idealer Anwendungsfall ist die Speicherung vieler Daten im Speicher, die sich nicht ändern, auf die aber während der Programmausführung mehrmals zugegriffen werden wird. In diesem Fall profitiert Ihr Programm in hohem Maße von der Leistungssteigerung durch Tupel.

#2. Mehrere Werte zurückgeben

Sie können Tupel verwenden, um mehrere Werte aus einer Funktion zurückzugeben und das Ergebnis zu destrukturieren. Zum Beispiel:

from random import randint

def create_two_numbers():
 erste_num = randint(0, 9)
 zweite_num = randint(0, 9)

 return erste_num, zweite_num

erste_num, zweite_num = create_two_numbers()

In diesem Beispiel haben wir eine Funktion, die zwei Zufallszahlen erzeugt und sie beide in einem Tupel zurückgibt. Die Anweisung return first_num, second_num ist gleichbedeutend mit return (first_num, second_num). Das liegt daran, dass Klammern bei der Erstellung von Tupeln optional sind. Um auf das Ergebnis zuzugreifen, müssen wir es destrukturieren.

#3. Werte sind schreibgeschützt

Tupel sind nach ihrer Erstellung unveränderlich. Sie sind daher ideal für die Speicherung von Daten im Speicher, die sich während der Programmausführung nicht mehr ändern. Sie stellen sicher, dass Sie die Daten nicht versehentlich irgendwo anders in Ihrem Code überschreiben.

#4. Mehrere Datentypen speichern

Mit Tupeln können Sie Werte von mehreren Datentypen speichern. So können Sie Datensätze erstellen, z.B. die Daten eines Benutzers in einem Tupel speichern. Sie können auch kompliziertere Elemente wie Funktionen, Wörterbücher, andere Tupel und sogar Listen speichern.

Gängige Tupel-Methoden

#1. zählen()

Das Tupel-Objekt enthält die count-Methode, mit der gezählt wird, wie oft ein Element vorkommt. Zum Beispiel:

# Erstellen eines Tupels mit mehreren Zahlen
values = (1, 2, 3, 4, 5, 4, 4, 6)

# Zählen der Anzahl der Vieren
n_fours = values.count(4)

# Ausgeben der Anzahl der Vieren
print(n_fours)
640shots_so

Anhand dieses Beispiels können wir sehen, dass die Zahl 4 genau dreimal in unserem Tupel vorkommt.

#2. index()

Die Methode index kann verwendet werden, um den Index des ersten Vorkommens eines Wertes in einem Tupel zu ermitteln. Wenn der Wert nicht existiert, wird eine ValueError-Ausnahme ausgelöst. Der folgende Code veranschaulicht die Funktionsweise der index-Methode:

# Erstellen eines Tupels mit mehreren Zahlen
values = (1, 2, 3, 4, 5, 4, 4, 6)

# Suche nach Index von 4
index_of_four = values.index(4)
print("Index von vier:", index_of_four)

# Suche nach Index von 9
index_of_nine = values.index(9)
print("Index von neun:", index_of_nine)

Und wenn wir den obigen Code ausführen, ist dies die Ausgabe:

803shots_so

In diesem Fall ist der Index von 4 gleich 3, und der Code lief ohne Probleme. Aber als es darum ging, den Index von 9 zu finden, löste das Programm eine Ausnahme aus. Es ist wichtig, solche Ausnahmen zu behandeln, wenn Sie Python-Programme schreiben, die die Index-Methode verwenden.

#Nr. 3. len()

Wie alle iterierbaren Objekte in Python haben auch Tupel eine Längeneigenschaft, auf die Sie zugreifen können, wenn Sie das Tupel als Argument an die Funktion len() übergeben.

# Erstellen eines Tupels
values = (1, 2, 3, 4)

# Ermitteln der Länge
length = len(values)

# Drucken der Ausgabe
print(length)
316shots_so

Dies ist das Ergebnis der Ausführung des obigen Codes.

#4. min() und max()

Die Methoden min und max arbeiten in einer Schleife durch jedes Element in einer Iterable und vergleichen, ob es größer oder kleiner als das vorherige ist. Am Ende gibt es max das größte Element in der Iterable zurück, während min das kleinste zurückgibt.

Bei Zahlen ist die Bedienung offensichtlich. Bei Zeichenketten verwendet Python die alphabetische Reihenfolge. Das kleinste Wort, das von min zurückgegeben wird, ist das erste Wort, wenn die Zeichenketten in alphabetischer Reihenfolge geschrieben wurden. Das größte Wort hingegen ist das letzte Wort. Wenn die Iterable eine Mischung aus verschiedenen Datentypen enthält, schlagen beide Operationen fehl, da Python nicht weiß, wie man verschiedene Datentypen vergleicht.

Hier ist ein Code-Beispiel:

# Tupel mit Werten erstellen
values = (1, 2, 3, 4, 5)

# Den größten Wert ermitteln
largest = max(values)

# Den kleinsten Wert ermitteln
smallest = min(values)

# Die Ergebnisse ausgeben
print(largest)
print(smallest)
257shots_so

#5. sortiert()

Die sortierte Funktion in Python nimmt ein iterables Objekt auf und gibt eine Liste der sortierten Elemente zurück. Sie können die sortierte Funktion aufrufen, ein Tupel als Argument übergeben und die Elemente des Tupels sortiert in einer Liste erhalten. Um die sortierte Liste in ein Tupel umzuwandeln, können Sie die Konstruktorfunktion verwenden. Hier ist ein Beispiel:

# Erstellen eines Tupels mit Werten in zufälliger Reihenfolge
values = (1, 5, 3, 3, 2, 4)

# Sortieren der Werte mit sorted in eine Liste
sorted_list = sorted(values)

# Umwandeln der Liste in ein Tupel
sorted_tuple = tuple(sorted_list)

# Drucken der Ausgabe
print(sorted_tuple)
744shots_so

#6. Tupel addieren und multiplizieren

Bei der Addition von zwei Tupeln werden diese einfach miteinander verknüpft. Bei der Multiplikation werden die Elemente eines Tupels so oft wiederholt, wie der Wert, mit dem Sie multipliziert haben. Hier ist ein Beispiel, um die beiden Beispiele zu veranschaulichen.

# Erstellen Sie ein Tupel mit einigen Werten
Werte = (1, 2, 3, 4, 5)

# Erstellen Sie ein neues Tupel durch Addition
addiert = Werte

# Erstellen Sie ein neues Tupel durch Multiplikation
multipliziert = Werte * 2

print("Werte Werte =", addiert)
print("Werte * 2 =", multipliziert)
138schüsse_so

Letzte Worte

In diesem Artikel haben Sie gelernt, dass:

  • Tupel sind listenähnliche Objekte, die zum Speichern von Wertesammlungen verwendet werden.
  • Im Gegensatz zu Listen sind sie unveränderlich.
  • Sie sind schneller und effizienter als Listen.
  • Sie können unter Verwendung von Klammern und der Trennung der Werte durch Kommas konstruiert werden.
  • Sie können auch mit der Tupel-Konstruktorfunktion erstellt werden.
  • Sie können auf einzelne Werte über ein nullbasiertes Indexsystem zugreifen.
  • Sie können auch Werte aus dem Tupel destrukturieren.
  • Sie können auch über Werte iterieren, indem Sie eine for-Schleife verwenden.
  • Die verschiedenen Methoden, die Sie mit einem Tupel verwenden können.

Als Nächstes sollten Sie sich weitere Python-Inhalte ansehen, z.B. Python-Listenmethoden und Python-Wörterbuch-Methoden.

  • Anesu Kafesu
    Autor
    Full-Stack-Webentwickler und technischer Redakteur. Lernt derzeit KI.
Dank an unsere Sponsoren
Weitere gute Lektüre zum Thema Entwicklung
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder