Einmalige Berechnungsschleife
Eine Liste mit ganzen Zahlen, die die Generation eines jeden Pokémon repräsentiert, wurde in deine Sitzung geladen: generations
. Du möchtest die Zählungen jeder Generation sammeln und bestimmen, welchen Anteil jede Generation an der Gesamtzahl der ganzen Zahlen hat.
Die folgende Schleife wurde geschrieben, um diese Aufgabe zu erfüllen:
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)
)
Wir können diese Schleife effizienter gestalten, indem wir eine einmalige Berechnung außerhalb der Schleife durchführen.
Diese Übung ist Teil des Kurses
Effizienten Python-Code schreiben
Anleitung zur Übung
- Importiere
Counter
aus dem Modulcollections
. - Verwende
Counter()
, um die Anzahl der einzelnen Generationen in der Listegenerations
zu sammeln. Speichere dies alsgen_counts
. - Schreibe eine bessere for-Schleife, die eine einmalige Berechnung außerhalb (oberhalb) der Schleife durchführt. Verwende genau die gleiche Syntax wie die ursprüngliche for-Schleife (kopiere einfach die einmalige Berechnung oberhalb der Schleife und füge sie ein).
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
# 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))