Aan de slagGa gratis aan de slag

Pokémon verzamelen zonder een lus

Een lijst met 720 Pokémon is in je sessie geladen als poke_names. Een andere lijst met de bijbehorende generatie van elke Pokémon is geladen als poke_gens.

Er is een for-lus gemaakt om de Pokémon te filteren die tot generatie één of twee behoren en het aantal letters in de naam van elke Pokémon te verzamelen:

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)

Deze oefening maakt deel uit van de cursus

Efficiënte Python-code schrijven

Cursus bekijken

Oefeninstructies

  • Schrap de bovenstaande for-lus met behulp van list comprehension en de functie map():

    • Gebruik een list comprehension om elke Pokémon te verzamelen die tot generatie 1 of generatie 2 behoort. Sla dit op als gen1_gen2_pokemon.
    • Gebruik de functie map() om het aantal letters in de naam van elke Pokémon in de lijst gen1_gen2_pokemon te verzamelen. Sla dit map object op als name_lengths_map.
    • Combineer gen1_gen2_pokemon en name_lengths_map tot een lijst met de naam gen1_gen2_name_lengths.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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])
Code bewerken en uitvoeren