Beheben des ValueError: Verwenden des Asterisk-Operators
Manchmal möchten Sie vielleicht die ersten Elemente eines iterierbaren Objekts entpacken und den Rest in einer einzigen Liste sammeln. Der Asterisk-Operator (*), auch bekannt als "Stern"- oder "Entpackungs"-Operator, ist dafür perfekt geeignet. Er ermöglicht es Ihnen, die verbleibenden Elemente eines iterierbaren Objekts einer einzelnen Variablen als Liste zuzuweisen.
Lassen Sie uns eine neue Python-Datei namens unpack_solution2.py im Verzeichnis ~/project mit dem WebIDE-Editor erstellen.
Fügen Sie den folgenden Code zu unpack_solution2.py hinzu:
## Beispiel 1: Entpacken des ersten Elements und Sammeln des Rests
data1 = [10, 20, 30, 40, 50]
## Weisen Sie das erste Element 'first' und den Rest 'rest_of_data' zu
first, *rest_of_data = data1
print(f"Example 1: first={first}, rest_of_data={rest_of_data}")
## Beispiel 2: Entpacken der ersten beiden Elemente und Sammeln des Rests
data2 = ('a', 'b', 'c', 'd')
## Weisen Sie die ersten beiden Elemente 'item1' und 'item2' und den Rest 'remaining_items' zu
item1, item2, *remaining_items = data2
print(f"Example 2: item1={item1}, item2={item2}, remaining_items={remaining_items}")
## Beispiel 3: Entpacken des letzten Elements und Sammeln des Rests
data3 = [1, 2, 3, 4, 5]
## Weisen Sie das letzte Element 'last' und den Rest 'all_but_last' zu
*all_but_last, last = data3
print(f"Example 3: all_but_last={all_but_last}, last={last}")
## Beispiel 4: Entpacken des ersten und letzten Elements und Sammeln der Mitte
data4 = "python"
## Weisen Sie das erste Zeichen 'start', das letzte 'end' und die Mitte 'middle' zu
start, *middle, end = data4
print(f"Example 4: start={start}, middle={middle}, end={end}")
Speichern Sie die Datei.
Führen Sie das Skript vom Terminal aus:
python unpack_solution2.py
Sie sollten die folgende Ausgabe sehen:
Example 1: first=10, rest_of_data=[20, 30, 40, 50]
Example 2: item1=a, item2=b, remaining_items=['c', 'd']
Example 3: all_but_last=[1, 2, 3, 4], last=5
Example 4: start=p, middle=['y', 't', 'h', 'o'], end=n
Der Asterisk-Operator bietet eine flexible Möglichkeit, das Entpacken zu handhaben, wenn die Anzahl der Elemente im iterierbaren Objekt größer sein könnte als die Anzahl der explizit benannten Variablen. Die mit * versehene Variable erhält immer eine Liste der verbleibenden Elemente (die eine leere Liste sein kann, wenn keine verbleibenden Elemente vorhanden sind).