Coleta de Pokémon sem um loop
Uma lista contendo 720 Pokémon foi carregada na sua sessão como poke_names
. Outra lista contendo a geração correspondente de cada Pokémon foi carregada como poke_gens
.
Um loop for foi criado para filtrar os Pokémon que pertencem à primeira ou à segunda geração e coletar o número de letras no nome de cada 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)
Este exercício faz parte do curso
Como escrever um código Python eficiente
Instruções de exercício
Elimine o loop for acima usando a compreensão de lista e a função
map()
:Use a compreensão de listas para coletar cada Pokémon que pertence à geração 1 ou à geração 2. Salve o resultado como
gen1_gen2_pokemon
.Use a função
map()
para coletar o número de letras do nome de cada Pokémon na listagen1_gen2_pokemon
. Salve esse objeto de mapa comoname_lengths_map
.Combine
gen1_gen2_pokemon
ename_lengths_map
em uma lista chamadagen1_gen2_name_lengths
.
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
# 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])