ПочатиПочніть безкоштовно

Збирання покемонів без циклу

Список із 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():

    • Використайте спискове включення, щоб зібрати всіх покемонів, які належать до покоління 1 або покоління 2. Збережіть це як 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])
Редагувати та запускати код