CommencerCommencer gratuitement

Collecte de Pokémon sans boucle

Une liste contenant 720 Pokémon a été chargée dans votre session sous le nom poke_names. Une autre liste contenant la génération correspondante de chaque Pokémon a été chargée sous le nom poke_gens.

Une boucle for a été créée afin de filtrer les Pokémon appartenant à la première ou à la deuxième génération et de 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

Afficher le cours

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 tous les Pokémon appartenant à la génération 1 ou à la génération 2. Enregistrez-la sous gen1_gen2_pokemon.

    • Utilisez la fonction map() pour recenser le nombre de lettres dans le nom de chaque Pokémon figurant dans la liste gen1_gen2_pokemon. Enregistrez cet objet carte sous le nom name_lengths_map.

    • Fusionnez gen1_gen2_pokemon et name_lengths_map dans une liste intitulée gen1_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])
Modifier et exécuter le code