Colectarea Pokémon-urilor fără o buclă
O listă cu 720 de Pokémon a fost încărcată în sesiunea ta ca poke_names. O altă listă cu generația corespunzătoare fiecărui Pokémon a fost încărcată ca poke_gens.
A fost creată o buclă for pentru a filtra Pokémon-urile din generația unu sau doi și pentru a colecta numărul de litere din numele fiecăruia:
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)
Acest exercițiu face parte din cursul
Scriere eficientă a codului Python
Instrucțiuni pentru exercițiu
Elimină bucla for de mai sus folosind list comprehension și funcția
map():- Folosește list comprehension pentru a colecta fiecare Pokémon din generația 1 sau generația 2. Salvează rezultatul ca
gen1_gen2_pokemon. - Folosește funcția
map()pentru a calcula numărul de litere din numele fiecărui Pokémon din listagen1_gen2_pokemon. Salvează acest obiect map caname_lengths_map. - Combină
gen1_gen2_pokemonșiname_lengths_mapîntr-o listă numităgen1_gen2_name_lengths.
- Folosește list comprehension pentru a colecta fiecare Pokémon din generația 1 sau generația 2. Salvează rezultatul ca
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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])