ComeçarComece gratuitamente

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

Ver Curso

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 lista gen1_gen2_pokemon. Salve esse objeto de mapa como name_lengths_map.

    • Combine gen1_gen2_pokemon e name_lengths_map em uma lista chamada gen1_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])
Editar e executar código