Raccogliere Pokémon senza un ciclo
Una lista con 720 Pokémon è stata caricata nella tua sessione come poke_names. Un'altra lista con la generazione corrispondente di ciascun Pokémon è stata caricata come poke_gens.
È stato creato un ciclo for per filtrare i Pokémon che appartengono alla prima o alla seconda generazione e raccogliere il numero di lettere nel nome di ciascun Pokémon:
gen1_gen2_name_lengths_loop = []
for name,gen in zip(poke_names, poke_gens):
if gen < 3:
name_length = len(name)
poke_tuple = (name, name_length)
gen1_gen2_name_lengths_loop.append(poke_tuple)
Questo esercizio fa parte del corso
Scrivere codice Python efficiente
Istruzioni dell'esercizio
Elimina il ciclo for sopra usando una list comprehension e la funzione
map():- Usa una list comprehension per raccogliere ogni Pokémon che appartiene alla generazione 1 o alla generazione 2. Salva il risultato come
gen1_gen2_pokemon. - Usa la funzione
map()per ricavare il numero di lettere nel nome di ciascun Pokémon all'interno della listagen1_gen2_pokemon. Salva questo oggetto map comename_lengths_map. - Combina
gen1_gen2_pokemonename_lengths_mapin una lista chiamatagen1_gen2_name_lengths.
- Usa una list comprehension per raccogliere ogni Pokémon che appartiene alla generazione 1 o alla generazione 2. Salva il risultato come
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Collect Pokémon that belong to generation 1 or generation 2
gen1_gen2_pokemon = [name for name,gen in ____(____, ____) if gen < ____]
# Create a map object that stores the name lengths
name_lengths_map = ____(len, ____)
# Combine gen1_gen2_pokemon and name_lengths_map into a list
gen1_gen2_name_lengths = [*____(____, ____)]
print(gen1_gen2_name_lengths_loop[:5])
print(gen1_gen2_name_lengths[:5])