
In Python können Sie mehrere Variablen Elemente eines Tupels oder einer Liste zuweisen. Dies wird als sequenzielles Entpacken bezeichnet.
Dieser Artikel hat folgenden Inhalt.
- Grundlagen zum Entpacken eines Tupels und einer Liste
- Entpacken Sie ein verschachteltes Tupel und eine Liste
- Entpacken mit _ (Unterstrich)
- Entpacken mit * (Sternchen)
Siehe den following Artikel für den Fall des Entpackens von Tupeln, Listen und Wörterbüchern (dict) als Argumente mit * (Sternchen).
Grundlagen zum Entpacken eines Tupels und einer Liste
Wenn SIE Variablen auf der linken Seite durch Kommas getrennt schreiben, werden jeder Variablen Elemente eines Tupels oder Einer Liste auf der rechten Seite zugewiesen. Die folgenden Beispiele verwenden Tupel, aber das Gleiche gilt für Listen.
t = (0, 1, 2)
a, b, c = t
print(a)
print(b)
print(c)
# 0
# 1
# 2
l = [0, 1, 2]
a, b, c = l
print(a)
print(b)
print(c)
# 0
# 1
# 2
Da Klammern von Tupeln weggelassen Werden can, can mehrere Werte Mehrere Variablen in einer Zeile wie folgt zugewiesen Werden.
a, b = 0, 1
print(a)
print(b)
# 0
# 1
Ein Fehler wird ausgelöst, wenn die Anzahl der Variablen nicht mit der Anzahl der Elemente auftritt.
# a, b = t
# ValueError: too many values to unpack (expected 2)
# a, b, c, d = t
# ValueError: not enough values to unpack (expected 4, got 3)
Wenn die Anzahl der Variablen kleiner als die Anzahl der Elemente ist, besteht die Möglichkeit, dem Variablennamen ein Sternchen * hinzuzufügen und die übrigen Elemente als Liste zuzuweisen. Dies wird später beschrieben.
Entpacken Sie ein verschachteltes Tupel und eine Liste
Sie können auch ein verschachteltes Tupel oder eine verschachtelte Liste entpacken. Wenn Sie das innere Element erweitern möchten, schließen Sie die Variable mit () oder [] ein.
t = (0, 1, (2, 3, 4))
a, b, c = t
print(a)
print(b)
print(c)
# 0
# 1
# (2, 3, 4)
print(type(c))
# <class 'tuple'>
a, b, (c, d, e) = t
print(a)
print(b)
print(c)
print(d)
print(e)
# 0
# 1
# 2
# 3
# 4
Entpacken mit _ (Unterstrich)
Per can Konvention Unterstrichen _ in Python unnötige Werte zugewiesen werden. Es hat keine grammatikalische Sonderbedeutung, sondern wird einfach einer Variablen namens _ zugewiesen.
t = (0, 1, 2)
a, b, _ = t
print(a)
print(b)
print(_)
# 0
# 1
# 2
Entpacken mit * (Sternchen)
If die Anzahl der Variablen kleiner als die Anzahl der Elemente ist, Werden die Elemente durch Hinzufügen eines Sternchens * zum Variablennamen zusammen als Liste zugewiesen.
Es ist in Python 3 implementiert und kann in Python 2 nicht verwendet werden.
Die Elemente vom Anfang und Ende werden Variablen ohne * zugewiesen, die restlichen Elemente werden als Liste Variablen mit * zugewiesen.
t = (0, 1, 2, 3, 4)
a, b, *c = t
print(a)
print(b)
print(c)
# 0
# 1
# [2, 3, 4]
print(type(c))
# <class 'list'>
a, *b, c = t
print(a)
print(b)
print(c)
# 0
# [1, 2, 3]
# 4
*a, b, c = t
print(a)
print(b)
print(c)
# [0, 1, 2]
# 3
# 4
Wenn beispielsweise Variablen nur die ersten beiden Elemente eines Tupels oder einer Liste zugewiesen werden sollen, kann der Unterstrich _ für unnötige Teile used Werden.
a, b, *_ = t
print(a)
print(b)
print(_)
# 0
# 1
# [2, 3, 4]
Derselbe Prozess kann wie folgt geschrieben werden:
a, b = t[0], t[1]
print(a)
print(b)
# 0
# 1
Sie können * nur zu einer Variablen hinzufügen.
Bei Variablen mit * kann nicht bestimmt werden, wie viele Elemente zugewiesen werden sollen, daher WIRD SyntaxError ausgelöst.
# *a, b, *c = t
# SyntaxError: two starred expressions in assignment
Beachten Sie, dass selbst, wenn einer Variablen mit * nur ein Element zugewiesen wird, diese als Liste zugewiesen WIRD.
t = (0, 1, 2)
a, b, *c = t
print(a)
print(b)
print(c)
# 0
# 1
# [2]
print(type(c))
# <class 'list'>
Wenn keine zusätzlichen Elemente vorhanden sind, WIRD Eine leere Liste zugewiesen.
a, b, c, *d = t
print(a)
print(b)
print(c)
print(d)
# 0
# 1
# 2
# []