IniziaInizia gratis

Punteggi totali e medie dei Pokémon senza un ciclo

Un elenco di 720 Pokémon è stato caricato nella tua sessione con il nome names. Le statistiche corrispondenti di ciascun Pokémon sono state caricate come array NumPy chiamato stats. Ogni riga di stats corrisponde a un Pokémon in names e ogni colonna rappresenta una singola statistica del Pokémon (HP, Attack, Defense, Special Attack, Special Defense e Speed rispettivamente.)

Vuoi raccogliere il valore totale delle statistiche di ciascun Pokémon (ossia la somma di ogni riga in stats) e il valore medio delle statistiche di ciascun Pokémon (ossia la media di ogni riga in stats) per individuare il Pokémon più forte.

Il seguente ciclo for è stato scritto per raccogliere questi 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))

Questo esercizio fa parte del corso

Scrivere codice Python efficiente

Visualizza il corso

Istruzioni dell'esercizio

  • Sostituisci il ciclo for sopra usando NumPy:
    • Crea un array dei punteggi totali (total_stats_np) usando il metodo .sum() e specificando l'asse corretto.
    • Crea un array delle medie (avg_stats_np) usando il metodo .mean() e specificando l'asse corretto.
    • Crea una lista finale di output (poke_list_np) combinando la lista names, l'array total_stats_np e l'array avg_stats_np.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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))
Modifica ed esegui il codice