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