Ciclo con calcolo una tantum
Nella tua sessione è stata caricata una lista di interi che rappresenta la generazione di ciascun Pokémon, chiamata generations. Vuoi raccogliere i conteggi di ogni generazione e determinare quale percentuale ciascuna generazione rappresenta sul numero totale di interi.
Il ciclo seguente è stato scritto per svolgere questo compito:
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)
)
Rendiamo questo ciclo più efficiente spostando un calcolo da eseguire una sola volta fuori dal ciclo.
Questo esercizio fa parte del corso
Scrivere codice Python efficiente
Istruzioni dell'esercizio
- Importa
Counterdal modulocollections. - Usa
Counter()per raccogliere il conteggio di ciascuna generazione dalla listagenerations. Salvalo comegen_counts. - Scrivi un ciclo for migliore che collochi un calcolo una tantum fuori (sopra) il ciclo. Usa esattamente la stessa sintassi del ciclo for originale (puoi semplicemente copiare e incollare il calcolo una tantum sopra il ciclo).
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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))