Pokémon sammeln ohne Schleife
Eine Liste mit 720 Pokémon wurde als poke_names
in deine Sitzung geladen. Eine weitere Liste mit den entsprechenden Pokémon-Generationen wurde unter poke_gens
geladen.
Es wurde eine for-Schleife erstellt, um die Pokémon zu filtern, die zur ersten oder zweiten Generation gehören, und um die Anzahl der Buchstaben im Namen jedes Pokémon zu sammeln:
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
Eliminiere die obige for-Schleife mithilfe des Listenverständnisses und der Funktion
map()
:Verwende das Listenverständnis, um alle Pokémon zu sammeln, die zu Generation 1 oder Generation 2 gehören. Speichere dies als
gen1_gen2_pokemon
.Verwende die Funktion
map()
, um die Anzahl der Buchstaben im Namen jedes Pokémon in der Listegen1_gen2_pokemon
zu sammeln. Speichere dieses Kartenobjekt alsname_lengths_map
.Kombiniere
gen1_gen2_pokemon
undname_lengths_map
zu einer Liste namensgen1_gen2_name_lengths
.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
# 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])