Reunir Pokémon sin bucle
Se ha cargado en tu sesión una lista que contiene 720 Pokémon como poke_names
. Se ha cargado otra lista que contiene la generación correspondiente a cada Pokémon como poke_gens
.
Se ha creado un bucle for para filtrar los Pokémon que pertenecen a la generación uno o dos, y recoger el número de letras del nombre 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 ejercicio forma parte del curso
Escribir código Python eficiente
Instrucciones de ejercicio
Elimina el bucle for anterior utilizando la comprensión de listas y la función
map()
:Utiliza la comprensión de listas para reunir cada Pokémon que pertenezca a la generación 1 o a la generación 2. Guárdala como
gen1_gen2_pokemon
.Utiliza la función
map()
para recoger el número de letras del nombre de cada Pokémon en la listagen1_gen2_pokemon
. Guarda este objeto mapa comoname_lengths_map
.Combina
gen1_gen2_pokemon
yname_lengths_map
en una lista llamadagen1_gen2_name_lengths
.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
# 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])