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
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 lijstgen1_gen2_pokemonte verzamelen. Sla dit map object op alsname_lengths_map. - Combineer
gen1_gen2_pokemonenname_lengths_maptot een lijst met de naamgen1_gen2_name_lengths.
- Gebruik een list comprehension om elke Pokémon te verzamelen die tot generatie 1 of generatie 2 behoort. Sla dit op als
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])