НачатьНачать бесплатно

Сбор покемонов без цикла

В вашей сессии загружен список из 720 покемонов — poke_names. Также загружен список poke_gens, содержащий соответствующее поколение для каждого покемона.

Для фильтрации покемонов первого и второго поколений и подсчёта количества букв в каждом имени был создан следующий цикл for:

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)

Это упражнение является частью курса

Эффективный код на Python

Посмотреть курс

Инструкции к упражнению

  • Замените приведённый цикл for списковым включением и функцией map():

    • С помощью спискового включения отберите покемонов, принадлежащих к первому или второму поколению. Сохраните результат в переменную gen1_gen2_pokemon.
    • С помощью функции map() вычислите количество букв в именах покемонов из списка gen1_gen2_pokemon. Сохраните этот объект map в переменную name_lengths_map.
    • Объедините gen1_gen2_pokemon и name_lengths_map в список gen1_gen2_name_lengths.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# 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])
Редактировать и запускать код