IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Invece di usare for i in range(len(names)), aggiorna il ciclo for usando i come variabile di indice e name come variabile dell'iteratore e utilizza enumerate().
  • 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 applicando enumerate() a names. Questa volta, fai partire l'indice di enumerate() 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)
Modifica ed esegui il codice