LoslegenKostenlos loslegen

Pokémon-Gesamtwerte und Durchschnittswerte ohne Schleife

Eine Liste mit 720 Pokémon wurde in deine Session mit dem Namen names geladen. Die entsprechenden Statistiken jedes Pokémon wurden als NumPy-Array namens stats geladen. Jede Zeile von stats zeigt ein Pokémon aus names und jede Spalte gibt die Werte eines einzelnen Pokémon an (HP, Attack, Defense, Special Attack, Special Defense und Speed ).

Du willst den Gesamtwert der Eigenschaften jedes Pokémon (also die Summe jeder Zeile in stats) und den Durchschnittswert der Eigenschaften jedes Pokémon (also den Mittelwert jeder Zeile in stats) ermitteln, um das stärkste Pokémon zu finden.

Die folgende for-Schleife wurde geschrieben, um diese Werte zu ermitteln:

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))

Diese Übung ist Teil des Kurses

Effizienten Python-Code schreiben

Kurs anzeigen

Anleitung zur Übung

  • Ersetz die obige for-Schleife mithilfe von NumPy:

    • Erstelle ein Array mit den Gesamtstatistiken (total_stats_np) mit der Methode .sum() und gib die richtige Achse an.

    • Erstell ein Array mit Durchschnittsstatistiken (avg_stats_np), indem du die Methode .mean() benutzt und die richtige Achse angibst.

    • Erstelle eine endgültige Ausgabeliste (poke_list_np), indem du die Liste names, das Array total_stats_np und das Array avg_stats_np zusammenfügst.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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 bearbeiten und ausführen