IniziaInizia gratis

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

Visualizza il corso

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 lista gen1_gen2_pokemon. Salva questo oggetto map come name_lengths_map.
    • Combina gen1_gen2_pokemon e name_lengths_map in una lista chiamata gen1_gen2_name_lengths.

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])
Modifica ed esegui il codice