Website-Suche

Verstehen von Tupeln in Python 3


Einführung

Ein Tupel ist eine Datenstruktur, die eine unveränderliche oder nicht veränderbare, geordnete Sequenz von Elementen ist. Da Tupel unveränderlich sind, können ihre Werte nicht geändert werden. Das folgende ist ein Beispiel für ein Tupel, das aus vier Elementen besteht:

Example Tuple
coral = ('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')

Tupel werden verwendet, um Daten zu gruppieren. Jedes Element oder jeder Wert, der sich in einem Tupel befindet, wird als Gegenstand bezeichnet.

Tupel haben Werte zwischen Klammern ( ), getrennt durch Kommas ,. Leere Tupel erscheinen als coral =(), aber Tupel mit auch nur einem Wert müssen ein Komma verwenden, wie in coral=('blue coral',).

Wenn wir das oben stehende Tupel mit print() ausgeben, erhalten wir die folgende Ausgabe, wobei das Tupel weiterhin in Klammern geschrieben ist:

print(coral)
('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')

Wenn man an Python-Tupel und andere Datenstrukturen denkt, die Arten von Sammlungen sind, ist es nützlich, alle verschiedenen Sammlungen, die man auf seinem Computer hat, zu berücksichtigen: deine Sammlung von Dateien, deine Musik-Playlists, deine Lesezeichen im Browser, deine E-Mails, die Sammlung von Videos, auf die du in einem Streaming-Dienst zugreifen kannst, und mehr.

Tupel sind ähnlich wie Listen, aber ihre Werte können nicht geändert werden. Aus diesem Grund vermitteln Sie beim Gebrauch von Tupeln in Ihrem Code anderen, dass Sie keine Änderungen an dieser Sequenz von Werten beabsichtigen. Darüber hinaus kann Ihr Code durch die Verwendung von Tupeln in Python optimiert werden, da der Code für Tupel etwas schneller ist als für Listen.

Voraussetzungen

Sie sollten Python 3 installiert und eine Programmierumgebung auf Ihrem Computer oder Server eingerichtet haben. Wenn Sie keine Programmierumgebung eingerichtet haben, können Sie auf die Installations- und Einrichtungsanleitungen für eine lokale Programmierumgebung oder für eine Programmierumgebung auf Ihrem Server verweisen, die für Ihr Betriebssystem (Ubuntu, CentOS, Debian usw.) geeignet ist.

Indizieren von Tupeln

Als eine geordnete Folge von Elementen kann jedes Element eines Tupels einzeln über Indizierung aufgerufen werden.

Jedes Element entspricht einer Indexnummer, die einen ganzzahligen Wert darstellt und mit der Indexnummer 0 beginnt.

Info: Um dem Beispielcode in diesem Tutorial zu folgen, öffnen Sie eine Python-interaktive Shell auf Ihrem lokalen System, indem Sie den Befehl python3 ausführen. Dann können Sie die Beispiele kopieren, einfügen oder bearbeiten, indem Sie sie nach der >>> Eingabeaufforderung hinzufügen.

Für das Beispiel coral Tupel zu Beginn dieses Tutorials sieht die Indexaufteilung folgendermaßen aus:

blauer KoralleHirnkoralleSäulenkoralleElchgeweihkoralle
123

Das erste Element, der String 'blaue Koralle', beginnt am Index 0, und die Liste endet am Index 3 mit dem Element 'Elchhornkoralle'.

Da jedes Element in einem Python-Tuple eine entsprechende Indexnummer hat, können wir auf Elemente zugreifen.

Jetzt können wir ein einzelnes Element des Tupels ansprechen, indem wir seine Indexnummer verwenden:

print(coral[2])
pillar coral

Die Indexnummern für dieses Tupel reichen von 0 bis 3, wie in der obigen Tabelle gezeigt. Um also eines der Elemente einzeln aufzurufen, würden wir auf die Indexnummern wie folgt verweisen:

coral[0] = 'blue coral'
coral[1] = 'staghorn coral' 
coral[2] = 'pillar coral' 
coral[3] = 'elkhorn coral'

Wenn wir das Tupel coral mit einer Indexnummer aufrufen, die größer als 3 ist, wird es außerhalb des gültigen Bereichs liegen, da es nicht gültig ist:

print(coral[22])
IndexError: tuple index out of range

Neben positiven Indexnummern können wir auch auf Elemente des Tupels mit einer negativen Indexnummer zugreifen, indem wir von hinten nach vorne zählen, beginnend mit -1. Dies ist besonders nützlich, wenn wir ein langes Tupel haben und ein Element nahe dem Ende des Tupels pinpointen möchten.

Für dasselbe Tupel coral sieht die negative Indexaufgliederung folgendermaßen aus:

blaues KorallenHirnkoralleSäulenkoralleElchgeweihkoralle
-4-3-2-1

Wenn wir also den Artikel 'blaue Koralle' mit seiner negativen Indexnummer ausgeben möchten, können wir dies so tun:

print(coral[-4])
blue coral

Wir können Zeichenfolgen in einem Tupel mit anderen Zeichenfolgen unter Verwendung des +-Operators verketten:

print('This reef is made up of ' + coral[1])
This reef is made up of staghorn coral

Wir konnten das Zeichenfolgen-Element an Indexnummer 0 mit der Zeichenfolge 'Dieses Riff besteht aus ' verketten. Wir können auch den + Operator verwenden, um 2 oder mehr Tupel zusammen zu verketten.

Mit Indexnummern, die den Elementen innerhalb eines Tupels entsprechen, können wir jedes Element eines Tupels einzeln zugreifen.

Tupel schneiden

Wir können Indizierung verwenden, um einige Elemente aus dem Tupel herauszuholen. Schnitte ermöglichen es uns, mehrere Werte auszuwählen, indem wir einen Bereich von Indizes erstellen, die durch einen Doppelpunkt [x:y] getrennt sind.

Angenommen, wir möchten nur die mittleren Elemente von coral drucken, können wir dies tun, indem wir einen Slice erstellen.

print(coral[1:3])
('staghorn coral', 'pillar coral')

Beim Erstellen eines Slices, wie in [1:3], ist die erste Indexnummer der Startpunkt des Slices (inklusive) und die zweite Indexnummer ist der Endpunkt des Slices (exklusiv). Deshalb sind in unserem obigen Beispiel die Elemente an der Position 1 und 2 die Elemente, die ausgegeben werden.

Wenn wir entweder das Ende der Liste einbeziehen wollen, können wir eine der Zahlen in der tuple[x:y]-Syntax weglassen. Wenn wir beispielsweise die ersten 3 Elemente des Tupels coral drucken möchten — was 'blue coral', 'staghorn coral', 'pillar coral' wären — können wir dies tun, indem wir Folgendes eingeben:

print(coral[:3])
('blue coral', 'staghorn coral', 'pillar coral')

Dies druckte den Anfang des Tupels aus und stoppte direkt vor dem Index 3.

Um alle Elemente am Ende eines Tupels einzuschließen, würden wir die Syntax umkehren:

print(coral[1:])
('staghorn coral', 'pillar coral', 'elkhorn coral')

Wir können auch negative Indexzahlen verwenden, wenn wir Tupel schneiden, ähnlich wie die positiven Indexzahlen:

print(coral[-3:-1])
print(coral[-2:])
('staghorn coral', 'pillar coral')
('pillar coral', 'elkhorn coral')

Ein letzter Parameter, den wir beim Slicing verwenden können, wird Stride genannt, und er bezieht sich darauf, wie viele Elemente nach dem Abrufen des ersten Elements aus dem Tuple vorwärts bewegt werden.

Bisher haben wir den Schrittparameter weggelassen, und Python verwendet standardmäßig einen Schritt von 1, sodass jedes Element zwischen zwei Indexnummern abgerufen wird.

Die Syntax für diese Konstruktion ist tuple[x:y:z], wobei z auf den Schrittwert verweist. Lassen Sie uns eine größere Liste erstellen, sie dann aufteilen und den Schrittwert auf 2 setzen:

numbers = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)

print(numbers[1:11:2])
(1, 3, 5, 7, 9)

Unser Konstruktion numbers[1:11:2] gibt die Werte zwischen den Indexnummern inklusiv von 1 und exklusiv von 11 aus, dann sagt der Sprungwert von 2 dem Programm, dass es nur jeden zweiten Artikel ausgeben soll.

Wir können die ersten beiden Parameter weglassen und nur den Schritt als Parameter mit der Syntax tuple[::z] verwenden:

print(numbers[::3])
(0, 3, 6, 9, 12)

Wenn das Tupel numbers mit dem Schritt auf 3 eingestellt wird, wird nur jeder dritte Artikel ausgegeben:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12

Das Schneiden von Tuplen mit sowohl positiven als auch negativen Indexzahlen und die Angabe eines Schrittes gibt uns die Kontrolle, um das gewünschte Ergebnis zu erhalten.

Verketten und Multiplizieren von Tupeln

Operatoren können verwendet werden, um Tuples zu verketten oder zu multiplizieren. Die Verkettung erfolgt mit dem + Operator, und die Multiplikation erfolgt mit dem * Operator.

Der + Operator kann verwendet werden, um zwei oder mehr Tupel zusammen zu verketten. Wir können die Werte von zwei vorhandenen Tupeln einem neuen Tupel zuweisen:

coral = ('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')
kelp = ('wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

coral_kelp = (coral + kelp)

print(coral_kelp)
('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral', 'wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

Da der +-Operator verkettet, kann er verwendet werden, um Tupel zu kombinieren und ein neues Tupel zu bilden, obwohl er ein vorhandenes Tupel nicht ändern kann.

Der * Operator kann verwendet werden, um Tupel zu multiplizieren. Möglicherweise müssen Sie alle Dateien in einem Verzeichnis auf einen Server kopieren oder eine Wiedergabeliste mit Freunden teilen – in diesen Fällen müssten Sie Sammlungen von Daten vervielfältigen.

Lassen Sie uns das coral Tupel mit 2 multiplizieren und das kelp Tupel mit 3 multiplizieren und diese neuen Tupel zuweisen:

multiplied_coral = coral * 2
multiplied_kelp = kelp * 3

print(multiplied_coral)
print(multiplied_kelp)
('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral', 'blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')
('wakame', 'alaria', 'deep-sea tangle', 'macrocystis', 'wakame', 'alaria', 'deep-sea tangle', 'macrocystis', 'wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

Durch die Verwendung des *-Operators können wir unsere Tupel so oft replizieren, wie wir angeben, und neue Tupel basierend auf der ursprünglichen Datenfolge erstellen.

Vorhandene Tupel können durch die Verwendung der Operatoren + und * verkettet oder multipliziert werden, um neue Tupel zu bilden.

Tupel-Funktionen

Es gibt einige eingebaute Funktionen, die Sie verwenden können, um mit Tupeln zu arbeiten. Lassen Sie uns ein paar davon anschauen.

len()

Wie bei Strings und Listen können wir die Länge eines Tuples mit len() berechnen, wobei wir das Tuple als Parameter übergeben, wie folgt:

len(coral)

Diese Funktion ist nützlich, wenn Sie Mindest- oder Höchstsammlungsgrößen durchsetzen müssen, zum Beispiel, oder um sequenzierte Daten zu vergleichen.

Wenn wir die Länge unserer Tupel kelp und numbers ausgeben, erhalten wir die folgende Ausgabe:

print(len(kelp))
print(len(numbers))
4
13

Wir erhalten die oben genannte Ausgabe, weil das Tupel kelp 4 Elemente hat:

kelp = ('wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

Und das Tupel numbers hat 13 Elemente:

numbers = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)

Obwohl diese Beispiele relativ wenige Elemente enthalten, gibt uns die len()-Funktion die Möglichkeit zu sehen, wie viele Elemente in großen Tupeln enthalten sind.

max() und min()

Wenn wir mit Tupeln arbeiten, die aus numerischen Elementen bestehen (einschließlich Ganzzahlen und Fließkommazahlen), können wir die Funktionen max() und min() verwenden, um die höchsten und niedrigsten Werte im jeweiligen Tupel zu finden.

Diese Funktionen ermöglichen es uns, Informationen über quantitative Daten zu finden, wie beispielsweise Testergebnisse, Temperaturen, Preise usw.

Lass uns ein Tupel aus Floats betrachten:

more_numbers = (11.13, 34.87, 95.59, 82.49, 42.73, 11.12, 95.57)

Um die max() zu erhalten, würden wir das Tupel in die Funktion übergeben, wie in max(more_numbers). Wir werden dies mit der print()-Funktion kombinieren, damit wir unsere Ergebnisse ausgeben können:

print(max(more_numbers))
95.59

Die max()-Funktion gab den höchsten Wert in unserem Tupel zurück.

Ähnlich können wir die min()-Funktion verwenden:

print(min(more_numbers))
11.12

Hier wurde der kleinste Float-Wert im Tupel gefunden und ausgegeben.

Genau wie bei der len()-Funktion können die max()- und min()-Funktionen sehr nützlich sein, wenn man mit Tuplen arbeitet, die viele Werte enthalten.

Wie sich Tupel von Listen unterscheiden

Der Hauptunterschied zwischen Tupeln und Listen besteht darin, dass sie nicht modifiziert werden können. Das bedeutet, dass Elemente nicht zu Tupeln hinzugefügt oder daraus entfernt werden können und dass Elemente innerhalb von Tupeln nicht ersetzt werden können.

Sie können jedoch 2 oder mehr Tupel verketten, um ein neues Tupel zu bilden.

Lassen Sie uns unser korallen Tuple betrachten:

coral = ('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')

Angenommen, wir möchten den Artikel 'blaue Koralle' durch einen anderen Artikel namens 'schwarze Koralle' ersetzen. Wenn wir versuchen, dieses Ergebnis auf die gleiche Weise zu ändern, wie wir es mit einer Liste tun, indem wir eingeben:

coral[0] = 'black coral'

Wir werden einen Fehler als unser Ergebnis erhalten:

TypeError: 'tuple' object does not support item assignment

Das liegt daran, dass Tupel nicht verändert werden können.

Wenn wir ein Tupel erstellen und entscheiden, dass wir wirklich eine Liste benötigen, können wir es in eine Liste umwandeln. Um ein Tupel in eine Liste zu konvertieren, können wir dies mit list() tun:

list(coral)

Und jetzt wird unser coral Datentyp eine Liste sein:

coral = ['blue coral', 'staghorn coral', 'pillar coral']

Wir können sehen, dass das Tupel in eine Liste umgewandelt wurde, weil sich die Klammern in eckige Klammern geändert haben.

Ebenso können wir Listen mit tuple() in Tupel umwandeln.

Sie können mehr über die Konvertierung von Datentypen erfahren, indem Sie "Wie man Datentypen in Python 3 konvertiert" lesen.

Schlussfolgerung

Der Datentyp Tuple ist ein sequenzierter Datentyp, der nicht verändert werden kann und Ihre Programme optimiert, da er für Python schneller zu verarbeiten ist als Listen. Wenn andere mit Ihnen an Ihrem Code zusammenarbeiten, wird Ihre Verwendung von Tuples ihnen vermitteln, dass Sie nicht beabsichtigen, dass diese Wertsequenzen verändert werden.

Dieses Tutorial behandelte die grundlegenden Funktionen von Tupeln, einschließlich Indizierung, Slicing und Verketten von Tupeln sowie die Präsentation von integrierten Funktionen, die verfügbar sind.