Total dan rata-rata Pokémon tanpa loop
Daftar berisi 720 Pokémon telah dimuat ke sesi Anda dengan nama names. Statistik masing-masing Pokémon telah dimuat sebagai array NumPy bernama stats. Setiap baris stats sesuai dengan satu Pokémon di names dan setiap kolom merepresentasikan statistik Pokémon individual (berturut-turut: HP, Attack, Defense, Special Attack, Special Defense, dan Speed).
Anda ingin mengumpulkan nilai total statistik setiap Pokémon (yakni jumlah dari setiap baris di stats) dan nilai rata-rata statistik setiap Pokémon (yakni mean dari setiap baris di stats) agar Anda dapat menemukan Pokémon terkuat.
For loop di bawah ini ditulis untuk mengumpulkan nilai-nilai tersebut:
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))
Latihan ini adalah bagian dari kursus
Menulis Kode Python yang Efisien
Petunjuk latihan
- Gantikan for loop di atas menggunakan NumPy:
- Buat array total statistik (
total_stats_np) menggunakan metode.sum()dan tentukan axis yang tepat. - Buat array rata-rata statistik (
avg_stats_np) menggunakan metode.mean()dan tentukan axis yang tepat. - Buat daftar keluaran akhir (
poke_list_np) dengan menggabungkan daftarnames, arraytotal_stats_np, dan arrayavg_stats_np.
- Buat array total statistik (
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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))