Totaluri și medii Pokémon fără buclă
O listă cu 720 de Pokémon a fost încărcată în sesiunea ta sub numele names. Statisticile corespunzătoare fiecărui Pokémon au fost încărcate ca un array NumPy numit stats. Fiecare rând din stats corespunde unui Pokémon din names, iar fiecare coloană reprezintă o statistică individuală (HP, Attack, Defense, Special Attack, Special Defense și Speed, în această ordine.)
Vrei să calculezi valoarea totală a statisticilor fiecărui Pokémon (adică suma fiecărui rând din stats) și valoarea medie a statisticilor fiecărui Pokémon (adică media fiecărui rând din stats), pentru a-l identifica pe cel mai puternic.
Bucla for de mai jos a fost scrisă pentru a colecta aceste valori:
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))
Acest exercițiu face parte din cursul
Scriere eficientă a codului Python
Instrucțiuni pentru exercițiu
- Înlocuiește bucla
forde mai sus folosind NumPy:- Creează un array cu totalul statisticilor (
total_stats_np) folosind metoda.sum()și specificând axa corectă. - Creează un array cu media statisticilor (
avg_stats_np) folosind metoda.mean()și specificând axa corectă. - Creează lista finală de rezultate (
poke_list_np) combinând listanames, array-ultotal_stats_npși array-ulavg_stats_np.
- Creează un array cu totalul statisticilor (
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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))