Zbieranie Pokémonów bez pętli
Do twojej sesji została wczytana lista zawierająca 720 Pokémonów pod nazwą poke_names. Druga lista z odpowiadającymi im generacjami jest dostępna jako poke_gens.
Przygotowana pętla for filtruje Pokémony należące do pierwszej lub drugiej generacji i zlicza liczbę liter w nazwie każdego z nich:
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)
To ćwiczenie jest częścią kursu
Wydajny kod w Pythonie
Instrukcje do ćwiczenia
Zastąp powyższą pętlę
forskładnią list składanych i funkcjąmap():- Użyj listy składanej, aby zebrać Pokémony należące do generacji 1 lub 2. Zapisz wynik jako
gen1_gen2_pokemon. - Użyj funkcji
map(), aby zebrać liczbę liter w nazwie każdego Pokémona z listygen1_gen2_pokemon. Zapisz ten obiekt map jakoname_lengths_map. - Połącz
gen1_gen2_pokemoniname_lengths_mapw listę o nazwiegen1_gen2_name_lengths.
- Użyj listy składanej, aby zebrać Pokémony należące do generacji 1 lub 2. Zapisz wynik jako
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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])