Aan de slagGa gratis aan de slag

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

Cursus bekijken

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 lijst names, de array total_stats_np en de array avg_stats_np te combineren.

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))
Code bewerken en uitvoeren