Einmalige Berechnungen in Schleifen
Eine Liste von ganzen Zahlen, welche die Generation jedes Pokémon repräsentieren, wurde in deine Session mit dem Namen generations geladen. Du möchtest die Anzahl jeder Generation sammeln und herausfinden, wie viel Prozent jede Generation von der Gesamtanzahl ausmacht.
Die folgende Schleife wurde geschrieben, um diese Aufgabe zu erledigen:
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)
)
Lass uns diese Schleife effizienter machen, indem wir eine einmalige Berechnung außerhalb der Schleife durchführen.
Diese Übung ist Teil des Kurses
<Kurs>Effizienten Python-Code schreiben</Kurs>Übungsanweisungen
- Importiere
Counteraus dem Modulcollections. - Benutze
Counter(), um die Anzahl jeder Generation aus der Listegenerationszu ermitteln. Speichere diese untergen_counts. - Schreibe eine bessere for-Schleife, die eine einmalige Berechnung außerhalb (über) der Schleife macht. Benutze genau die gleiche Syntax wie bei der ursprünglichen for-Schleife (kopiere einfach die einmalige Berechnung und füge sie über der Schleife ein).
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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))