Цикл с однократным вычислением
В вашу сессию загружен список целых чисел generations, где каждое число обозначает поколение покемона. Вам нужно подсчитать количество покемонов каждого поколения и определить, какую долю (в процентах) каждое поколение составляет от общего числа.
Для этого был написан следующий цикл:
for gen,count in gen_counts.items():
total_count = len(generations)
gen_percent = round(count / total_count * 100, 2)
print(
'generation {}: count = {:3} percentage = {}'
.format(gen, count, gen_percent)
)
Сделаем этот цикл эффективнее — вынесем однократное вычисление за его пределы.
Это упражнение является частью курса
Эффективный код на Python
Инструкции к упражнению
- Импортируйте
Counterиз модуляcollections. - С помощью
Counter()подсчитайте количество покемонов каждого поколения из спискаgenerations. Сохраните результат в переменнуюgen_counts. - Перепишите цикл
forтак, чтобы однократное вычисление было вынесено за его пределы (выше цикла). Используйте точно такой же синтаксис, что и в исходном цикле (просто скопируйте однократное вычисление и вставьте его перед циклом).
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Import Counter
____
# Collect the count of each generation
gen_counts = ____
# Improve for loop by moving one calculation above the loop
total_count = ____
for gen,count in gen_counts.items():
gen_percent = round(count / total_count * 100, 2)
print('generation {}: count = {:3} percentage = {}'
.format(gen, count, gen_percent))