Pokémon fangen ohne Schleife
Eine Liste mit 720 Pokémon wurde als poke_names in deine Session geladen. Eine andere Liste mit den jeweiligen Generationen der einzelnen Pokémon wurde unter poke_gens geladen.
Es wurde eine for-Schleife erstellt, um die Pokémon der ersten und zweiten Generation zu filtern und die Anzahl der Buchstaben im Namen jedes Pokémon zu ermitteln:
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)
Diese Übung ist Teil des Kurses
Effizienten Python-Code schreiben
Anleitung zur Übung
Vermeide die obige for-Schleife, indem du Listenabstraktion und die Funktion
map()nutzt:Benutze Listenabstraktion, um alle Pokémon zu sammeln, die zur ersten oder zweiten Generation gehören. Speichere die Werte als
gen1_gen2_pokemon.Benutze die Funktion
map(), um die Anzahl der Buchstaben im Namen jedes Pokémon aus der Listegen1_gen2_pokemonzu ermitteln. Speichere dieses map-Objekt alsname_lengths_map.Kombiniere
gen1_gen2_pokemonundname_lengths_mapin eine Liste namensgen1_gen2_name_lengths.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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])