Résoudre l'erreur ValueError : Utilisation de l'opérateur astérisque
Parfois, vous voudrez peut-être décompresser les premiers éléments d'un itérable et collecter le reste dans une seule liste. L'opérateur astérisque (*), également connu sous le nom d'opérateur "star" ou "de décompression" (unpacking operator), est parfait pour cela. Il vous permet d'affecter les éléments restants d'un itérable à une seule variable sous forme de liste.
Créons un nouveau fichier Python nommé unpack_solution2.py dans le répertoire ~/project en utilisant l'éditeur WebIDE.
Ajoutez le code suivant à unpack_solution2.py :
## Example 1: Unpacking the first element and collecting the rest
data1 = [10, 20, 30, 40, 50]
## Assign the first element to 'first' and the rest to 'rest_of_data'
first, *rest_of_data = data1
print(f"Example 1: first={first}, rest_of_data={rest_of_data}")
## Example 2: Unpacking the first two elements and collecting the rest
data2 = ('a', 'b', 'c', 'd')
## Assign the first two elements to 'item1' and 'item2', and the rest to 'remaining_items'
item1, item2, *remaining_items = data2
print(f"Example 2: item1={item1}, item2={item2}, remaining_items={remaining_items}")
## Example 3: Unpacking the last element and collecting the rest
data3 = [1, 2, 3, 4, 5]
## Assign the last element to 'last' and the rest to 'all_but_last'
*all_but_last, last = data3
print(f"Example 3: all_but_last={all_but_last}, last={last}")
## Example 4: Unpacking the first and last elements and collecting the middle
data4 = "python"
## Assign the first char to 'start', the last to 'end', and the middle to 'middle'
start, *middle, end = data4
print(f"Example 4: start={start}, middle={middle}, end={end}")
Enregistrez le fichier.
Exécutez le script à partir du terminal :
python unpack_solution2.py
Vous devriez voir la sortie suivante :
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
L'opérateur astérisque offre un moyen flexible de gérer la décompression (unpacking) lorsque le nombre d'éléments dans l'itérable peut être supérieur au nombre de variables explicitement nommées. La variable préfixée par * recevra toujours une liste des éléments restants (qui pourrait être une liste vide s'il n'y a pas d'éléments restants).