Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Zaimportuj Counter z modułu collections.
  • Użyj Counter(), aby zliczyć wystąpienia każdej generacji na liście generations. Zapisz wynik jako gen_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))
Edytuj i uruchom kod