Esercizio sui built-in: enumerate()
In questo esercizio farai pratica con la funzione built-in di Python enumerate(). Questa funzione è utile per ottenere una lista indicizzata. Per esempio, supponi di avere un elenco di persone arrivate a una festa che stai organizzando. La lista è ordinata per arrivo (Jerry è arrivato per primo, poi Kramer, ecc.):
names = ['Jerry', 'Kramer', 'Elaine', 'George', 'Newman']
Se volessi assegnare un indice che rappresenti l'ordine di arrivo, potresti usare il seguente ciclo for:
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')]
Ma non è la soluzione più efficiente. Vediamo come usare enumerate() per renderla più efficiente.
Questo esercizio fa parte del corso
Scrivere codice Python efficiente
Istruzioni dell'esercizio
- Invece di usare
for i in range(len(names)), aggiorna il ciclo for usandoicome variabile di indice enamecome variabile dell'iteratore e utilizzaenumerate(). - Riscrivi il ciclo for precedente usando
enumerate()e una list comprehension per creare una nuova lista,indexed_names_comp. - Crea un'altra lista (
indexed_names_unpack) usando l'asterisco (*) per decomprimere l'oggetto enumerate creato applicandoenumerate()anames. Questa volta, fai partire l'indice dienumerate()da uno invece che da zero.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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)