Samla Pokémon utan en loop
En lista med 720 Pokémon har laddats in i din session som poke_names. En annan lista med varje Pokémons motsvarande generation har laddats in som poke_gens.
En for-loop har skapats för att filtrera de Pokémon som tillhör generation ett eller två, och samla antalet bokstäver i varje Pokémons namn:
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)
Den här övningen är en del av kursen
Att skriva effektiv Python-kod
Övningsinstruktioner
Ersätt for-loopen ovan med listomfattning och funktionen
map():- Använd listomfattning för att samla varje Pokémon som tillhör generation 1 eller generation 2. Spara resultatet som
gen1_gen2_pokemon. - Använd funktionen
map()för att samla antalet bokstäver i varje Pokémons namn i listangen1_gen2_pokemon. Spara detta map-objekt somname_lengths_map. - Kombinera
gen1_gen2_pokemonochname_lengths_maptill en lista kalladgen1_gen2_name_lengths.
- Använd listomfattning för att samla varje Pokémon som tillhör generation 1 eller generation 2. Spara resultatet som
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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])