Pokémoni bez cyklu
Do tvé relace byl načten seznam poke_names obsahující 720 Pokémonů. Druhý seznam poke_gens obsahuje generaci příslušející každému Pokémonovi.
Níže je připravený cyklus for, který filtruje Pokémony z první nebo druhé generace a zjišťuje počet písmen v jejich jménu:
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)
Toto cvičení je součástí kurzu
Psaní efektivního kódu v Pythonu
Pokyny k cvičení
Nahraď výše uvedený cyklus
forpomocí list comprehension a funkcemap():- Pomocí list comprehension získej všechny Pokémony patřící do 1. nebo 2. generace. Výsledek ulož jako
gen1_gen2_pokemon. - Pomocí funkce
map()zjisti počet písmen v názvu každého Pokémona ze seznamugen1_gen2_pokemon. Výsledný map object ulož jakoname_lengths_map. - Zkombinuj
gen1_gen2_pokemonaname_lengths_mapdo seznamu s názvemgen1_gen2_name_lengths.
- Pomocí list comprehension získej všechny Pokémony patřící do 1. nebo 2. generace. Výsledek ulož jako
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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])