Pratique intégrée : enumerate()
Dans cet exercice, vous vous entraînerez à utiliser la fonction intégrée de Python enumerate()
. Cette fonction est utile pour obtenir une liste indexée. Supposons par exemple que vous disposiez d'une liste de personnes arrivées à une fête que vous organisez. La liste est classée par ordre d'arrivée (Jerry est le premier arrivé, suivi de Kramer, etc.) :
names = ['Jerry', 'Kramer', 'Elaine', 'George', 'Newman']
Si vous souhaitez attacher un index représentant l'ordre d'arrivée d'une personne, vous pouvez utiliser la boucle for suivante :
indexed_names = []
for i in range(len(names)):
index_name = (i, names[i])
indexed_names.append(index_name)
[(0,'Jerry'),(1,'Kramer'),(2,'Elaine'),(3,'George'),(4,'Newman')]
Mais ce n'est pas la solution la plus efficace. Voyons comment utiliser enumerate()
pour rendre cette opération plus efficace.
Cet exercice fait partie du cours
Écrire du code Python efficace
Instructions
- Au lieu d'utiliser
for i in range(len(names))
, mettez à jour la boucle for pour utiliseri
comme variable d'index etname
comme variable d'itérateur et utilisezenumerate()
. - Réécrivez la boucle for précédente en utilisant
enumerate()
et la compréhension de liste pour créer une nouvelle liste,indexed_names_comp
. - Créez une autre liste (
indexed_names_unpack
) en utilisant le caractère étoile (*
) pour décompresser l'objet d'énumération créé en utilisantenumerate()
surnames
. Cette fois, l'indice pourenumerate()
commence à un au lieu de zéro.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Rewrite the for loop to use enumerate
indexed_names = []
for ____,_____ in ____(names):
index_name = (i,name)
indexed_names.append(index_name)
print(indexed_names)
# Rewrite the above for loop using list comprehension
indexed_names_comp = [(____,____) for i,name in ____(names)]
print(indexed_names_comp)
# Unpack an enumerate object with a starting index of one
indexed_names_unpack = [____(names, ____)]
print(indexed_names_unpack)