Rassembler des Pokémon sans boucle
Une liste contenant 720 Pokémon a été chargée dans votre session à l'adresse poke_names
. Une autre liste contenant la génération correspondante de chaque Pokémon a été chargée à l'adresse poke_gens
.
Une boucle for a été créée pour filtrer les Pokémon appartenant à la génération 1 ou 2, et collecter le nombre de lettres dans le nom de chaque 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)
Cet exercice fait partie du cours
Écrire du code Python efficace
Instructions
Éliminez la boucle for ci-dessus en utilisant la compréhension de liste et la fonction
map()
:Utilisez la compréhension de liste pour rassembler chaque Pokémon appartenant à la génération 1 ou à la génération 2. Enregistrez ceci sous
gen1_gen2_pokemon
.Utilisez la fonction
map()
pour collecter le nombre de lettres du nom de chaque Pokémon dans la listegen1_gen2_pokemon
. Enregistrez cet objet cartographique sousname_lengths_map
.Combinez
gen1_gen2_pokemon
etname_lengths_map
dans une liste appeléegen1_gen2_name_lengths
.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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])