Suche…


Einführung

Ein Tupel ist eine unveränderliche Liste von Werten. Tupel sind eine der einfachsten und häufigsten Sammlungstypen von Python und können mit dem Kommaoperator erstellt werden ( value = 1, 2, 3 ).

Syntax

  • (1, a, "hallo") # a muss eine Variable sein

  • () # ein leeres Tupel

  • (1,) # ein Tupel mit 1 Elementen. (1) ist kein Tupel.

  • 1, 2, 3 # das 3-Element-Tupel (1, 2, 3)

Bemerkungen

Klammern werden nur für leere Tupel oder bei Verwendung in einem Funktionsaufruf benötigt.

Ein Tupel ist eine Folge von Werten. Die Werte können von jedem Typ sein und werden durch ganze Zahlen indiziert. In dieser Hinsicht sind Tupel sehr ähnlich wie Listen. Der wichtige Unterschied ist, dass Tupel unveränderlich und hashierbar sind, sodass sie in Sets und Karten verwendet werden können

Indexierung von Tupeln

x = (1, 2, 3)
x[0]  # 1
x[1]  # 2
x[2]  # 3
x[3]  # IndexError: tuple index out of range

Die Indizierung mit negativen Zahlen beginnt mit dem letzten Element als -1:

x[-1] # 3
x[-2] # 2
x[-3] # 1
x[-4] # IndexError: tuple index out of range

Indizierung einer Reihe von Elementen

print(x[:-1])   # (1, 2)
print(x[-1:])   # (3,)
print(x[1:3])   # (2, 3)

Tupel sind unveränderlich

Einer der Hauptunterschiede zwischen list und tuple in Python ist, dass Tupel unveränderlich sind, dh, dass Elemente nicht hinzugefügt oder geändert werden können, wenn das Tupel initialisiert ist. Zum Beispiel:

>>> t = (1, 4, 9)
>>> t[0] = 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

In ähnlicher Weise haben Tupel keine .append und .extend Methoden wie list . Die Verwendung von += ist möglich, ändert jedoch die Bindung der Variablen und nicht das Tupel selbst:

>>> t = (1, 2)
>>> q = t
>>> t += (3, 4)
>>> t
(1, 2, 3, 4)
>>> q
(1, 2)

Seien Sie vorsichtig, wenn Sie veränderliche Objekte (z. B. lists ) in Tupeln platzieren. Dies kann zu sehr verwirrenden Ergebnissen führen, wenn sie geändert werden. Zum Beispiel:

>>> t = (1, 2, 3, [1, 2, 3])
(1, 2, 3, [1, 2, 3])
>>> t[3] += [4, 5]

Wird sowohl ein Fehler ausgegeben als auch der Inhalt der Liste innerhalb des Tupels geändert:

TypeError: 'tuple' object does not support item assignment
>>> t
(1, 2, 3, [1, 2, 3, 4, 5])

Sie können den Operator += , um an ein Tupel "anzuhängen". Dies funktioniert, indem Sie ein neues Tupel mit dem neuen Element erstellen, das Sie "angehängt" haben, und es der aktuellen Variablen zuweisen. Das alte Tupel wird nicht verändert, sondern ersetzt!

Dies vermeidet das Konvertieren in eine und aus einer Liste. Dies ist jedoch langsam und eine schlechte Praxis, insbesondere wenn Sie mehrmals anhängen.

Tuple sind elementweise Hashfähig und gleichwertig

hash( (1, 2) )  # ok
hash( ([], {"hello"})  # not ok, since lists and sets are not hashabe

Daher kann ein Tupel nur dann in ein set oder als Schlüssel in einem dict , wenn jedes seiner Elemente dies kann.

{ (1, 2) } #  ok
{ ([], {"hello"}) ) # not ok

Tupel

Syntaktisch ist ein Tupel eine durch Kommas getrennte Liste von Werten:

t = 'a', 'b', 'c', 'd', 'e'

Obwohl dies nicht notwendig ist, werden Tupel häufig in Klammern gesetzt:

t = ('a', 'b', 'c', 'd', 'e')

Erstellen Sie ein leeres Tupel mit Klammern:

t0 = ()
type(t0)            # <type 'tuple'>

Um ein Tupel mit einem einzelnen Element zu erstellen, müssen Sie ein abschließendes Komma angeben:

t1 = 'a',
type(t1)              # <type 'tuple'>

Beachten Sie, dass ein einzelner Wert in Klammern kein Tupel ist:

t2 = ('a')
type(t2)              # <type 'str'>

Um ein Singleton-Tupel zu erstellen, muss ein nachfolgendes Komma verwendet werden.

t2 = ('a',)
type(t2)              # <type 'tuple'>

Beachten Sie, dass es für Singleton-Tupel empfohlen wird, Klammern zu verwenden (siehe PEP8 in den nachfolgenden Kommas ). Kein Leerzeichen nach dem nachgestellten Komma (siehe PEP8 zu Whitespaces )

t2 = ('a',)           # PEP8-compliant
t2 = 'a',             # this notation is not recommended by PEP8
t2 = ('a', )          # this notation is not recommended by PEP8

Eine andere Möglichkeit , ein Tupel zu erstellen , ist die integrierte Funktion tuple .

t = tuple('lupins')
print(t)              # ('l', 'u', 'p', 'i', 'n', 's')
t = tuple(range(3))
print(t)              # (0, 1, 2)

Diese Beispiele basieren auf Material aus dem Buch Think Python von Allen B. Downey .

Verpacken und Auspacken von Tupeln

Tupel in Python sind durch Kommas getrennte Werte. Das Einschließen von Klammern zur Eingabe von Tupeln ist optional, also die beiden Zuweisungen

a = 1, 2, 3   # a is the tuple (1, 2, 3)

und

a = (1, 2, 3) # a is the tuple (1, 2, 3)

sind gleichwertig. Die Zuordnung a = 1, 2, 3 wird auch als Packung bezeichnet, da Werte in einem Tupel zusammengefasst werden.

Beachten Sie, dass ein einwertiges Tupel auch ein Tupel ist. Um Python mitzuteilen, dass eine Variable ein Tupel und kein einzelner Wert ist, können Sie ein nachfolgendes Komma verwenden

a = 1  # a is the value 1
a = 1, # a is the tuple (1,)

Ein Komma ist auch erforderlich, wenn Sie Klammern verwenden

a = (1,) # a is the tuple (1,)
a = (1)  # a is the value 1 and not a tuple

Um Werte aus einem Tupel zu entpacken und mehrere Zuweisungen auszuführen, verwenden Sie diese Option

# unpacking AKA multiple assignment
x, y, z = (1, 2, 3) 
# x == 1
# y == 2
# z == 3

Das Symbol _ kann als Name einer verfügbaren Variablen verwendet werden, wenn nur einige Elemente eines Tupels als Platzhalter benötigt werden:

a = 1, 2, 3, 4
_, x, y, _ = a
# x == 2
# y == 3

Einzelelement-Tupel:

x, = 1,  # x is the value 1
x  = 1,  # x is the tuple (1,)

In Python 3 kann eine Zielvariable mit einem * -Prefix als Catch-All- Variable verwendet werden (siehe Iterables auspacken ):

Python 3.x 3.0
first, *more, last = (1, 2, 3, 4, 5)
# first == 1
# more == [2, 3, 4]
# last == 5

Elemente umkehren

Elemente innerhalb eines Tupels umkehren

colors = "red", "green", "blue"
rev = colors[::-1]
# rev: ("blue", "green", "red")
colors = rev
# colors: ("blue", "green", "red")

Oder mit reversed (reversed ergibt eine Iterable, die in ein Tupel umgewandelt wird):

rev = tuple(reversed(colors))
# rev: ("blue", "green", "red")
colors = rev
# colors: ("blue", "green", "red")

Eingebaute Tupel-Funktionen

Tupel unterstützen die folgenden integrierten Funktionen

Vergleich

Wenn Elemente vom gleichen Typ sind, führt Python den Vergleich durch und gibt das Ergebnis zurück. Wenn Elemente unterschiedliche Typen sind, wird geprüft, ob es sich um Zahlen handelt.

  • Bei Zahlen Vergleich durchführen.
  • Wenn eines der Elemente eine Zahl ist, wird das andere Element zurückgegeben.
  • Andernfalls werden Typen alphabetisch sortiert.

Wenn wir das Ende einer der Listen erreicht haben, ist die längere Liste "größer". Wenn beide Listen gleich sind, wird 0 zurückgegeben.

tuple1 = ('a', 'b', 'c', 'd', 'e')
tuple2 = ('1','2','3')
tuple3 = ('a', 'b', 'c', 'd', 'e')

cmp(tuple1, tuple2)
Out: 1

cmp(tuple2, tuple1)
Out: -1

cmp(tuple1, tuple3)
Out: 0

Tupel-Länge

Die Funktion len gibt die Gesamtlänge des Tupels zurück

len(tuple1)
Out: 5

Max eines Tupels

Die Funktion max gibt das Element mit dem Maximalwert aus dem Tupel zurück

max(tuple1)
Out: 'e'

max(tuple2)
Out: '3'

Min von einem Tupel

Die Funktion min gibt den Gegenstand aus dem Tupel mit dem Mindestwert zurück

min(tuple1)
Out: 'a'

min(tuple2)
Out: '1'

Konvertieren Sie eine Liste in ein Tupel

Die integrierte Funktion tuple wandelt eine Liste in ein Tupel.

list = [1,2,3,4,5]
tuple(list)
Out: (1, 2, 3, 4, 5)

Tuple-Verkettung

Verwenden Sie + um zwei Tupel zu verketten

tuple1 + tuple2
Out: ('a', 'b', 'c', 'd', 'e', '1', '2', '3')


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow