Pokémon-totalen en -gemiddelden zonder lus
Een lijst van 720 Pokémon is in je sessie geladen als names. De bijbehorende statistieken van elke Pokémon zijn geladen als een NumPy-array stats. Elke rij van stats komt overeen met een Pokémon in names en elke kolom stelt een individuele Pokémonstatistiek voor (HP, Attack, Defense, Special Attack, Special Defense en Speed).
Je wilt per Pokémon de totale statistiekwaarde verzamelen (dus de som van elke rij in stats) en de gemiddelde statistiekwaarde (dus het gemiddelde van elke rij in stats) zodat je de sterkste Pokémon kunt vinden.
Onderstaande for-lus is geschreven om deze waarden te verzamelen:
poke_list = []
for pokemon,row in zip(names, stats):
total_stats = np.sum(row)
avg_stats = np.mean(row)
poke_list.append((pokemon, total_stats, avg_stats))
Deze oefening maakt deel uit van de cursus
Efficiënte Python-code schrijven
Oefeninstructies
- Vervang de bovenstaande for-lus met NumPy:
- Maak een totaalstatistieken-array (
total_stats_np) met de methode.sum()en geef de juiste as op. - Maak een gemiddelde-statistieken-array (
avg_stats_np) met de methode.mean()en geef de juiste as op. - Maak een uiteindelijke uitvoerlijst (
poke_list_np) door de lijstnames, de arraytotal_stats_npen de arrayavg_stats_npte combineren.
- Maak een totaalstatistieken-array (
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Create a total stats array
total_stats_np = ____.____(axis=____)
# Create an average stats array
avg_stats_np = ____
# Combine names, total_stats_np, and avg_stats_np into a list
poke_list_np = [*____(names, total_stats_np, avg_stats_np)]
print(poke_list_np == poke_list, '\n')
print(poke_list_np[:3])
print(poke_list[:3], '\n')
top_3 = sorted(poke_list_np, key=lambda x: x[1], reverse=True)[:3]
print('3 strongest Pokémon:\n{}'.format(top_3))