Bucle de cálculo único
Se ha cargado en tu sesión una lista de números enteros que representa la generación de cada Pokémon, llamada generations
. Te gustaría reunir los recuentos de cada generación y determinar qué porcentaje representa cada generación sobre el recuento total de enteros.
El siguiente bucle se escribió para realizar esta tarea:
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)
)
Hagamos este bucle más eficiente moviendo un cálculo único fuera del bucle.
Este ejercicio forma parte del curso
Escribir código Python eficiente
Instrucciones de ejercicio
- Importa
Counter
del módulocollections
. - Utiliza
Counter()
para recoger el recuento de cada generación de la listagenerations
. Guárdala comogen_counts
. - Escribe un bucle for mejor que coloque un cálculo único fuera (encima) del bucle. Utiliza exactamente la misma sintaxis que en el bucle for original (simplemente copia y pega el cálculo único encima del bucle).
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
# 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))