Obliczenie wykonywane jednorazowo
Do twojej sesji wczytano listę liczb całkowitych generations, która zawiera numer generacji każdego Pokémona. Chcesz zebrać liczebności każdej generacji i obliczyć, jaki procent całkowitej liczby elementów stanowi każda z nich.
Do tego zadania napisano poniższą pętlę:
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)
)
Zoptymalizuj tę pętlę, przenosząc jednorazowe obliczenie poza jej ciało.
To ćwiczenie jest częścią kursu
Wydajny kod w Pythonie
Instrukcje do ćwiczenia
- Zaimportuj
Counterz modułucollections. - Użyj
Counter(), aby zliczyć wystąpienia każdej generacji na liściegenerations. Zapisz wynik jakogen_counts. - Napisz ulepszoną pętlę, w której jednorazowe obliczenie znajdzie się poza pętlą (nad nią). Zachowaj dokładnie taką samą składnię jak w oryginalnej pętli – po prostu skopiuj jednorazowe obliczenie i wklej je nad pętlą.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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))