Pokémon sammeln ohne Schleife
Eine Liste mit 720 Pokémon wurde als „ poke_names ” in deine Sitzung geladen. Eine andere Liste mit den jeweiligen Generationen der einzelnen Pokémon wurde unter poke_gens hochgeladen.
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 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
Mach die obige for-Schleife mit Hilfe von Listenkomprimierung und der Funktion „
map()” weg:Benutz Listenkomprimierung, um alle Pokémon zu sammeln, die zur Generation 1 oder Generation 2 gehören. Speichere dies als
gen1_gen2_pokemon.Benutz die Funktion „
map()“, um die Anzahl der Buchstaben im Namen jedes Pokémon aus der Liste „gen1_gen2_pokemon“ zu sammeln. Speicher dieses Kartenobjekt als „name_lengths_map“.Mach aus „
gen1_gen2_pokemon“ und „name_lengths_map“ eine Liste namens „gen1_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])