Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Zastąp powyższą pętlę for skł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 listy gen1_gen2_pokemon. Zapisz ten obiekt map jako name_lengths_map.
    • Połącz gen1_gen2_pokemon i name_lengths_map w listę o nazwie gen1_gen2_name_lengths.

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])
Edytuj i uruchom kod