1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. Viết mã Python hiệu quả

Connected

Bài tập

Tổng và trung bình Pokémon không dùng vòng lặp

Một danh sách gồm 720 Pokémon đã được nạp vào phiên làm việc của bạn với tên names. Thống kê tương ứng của từng Pokémon đã được nạp dưới dạng một mảng NumPy tên stats. Mỗi hàng của stats ứng với một Pokémon trong names và mỗi cột biểu diễn một chỉ số riêng lẻ của Pokémon (lần lượt là HP, Attack, Defense, Special Attack, Special Defense, và Speed).

Bạn muốn lấy tổng chỉ số của mỗi Pokémon (tức là tổng của từng hàng trong stats) và giá trị trung bình chỉ số của mỗi Pokémon (tức là trung bình của từng hàng trong stats) để tìm ra Pokémon mạnh nhất.

Vòng lặp for dưới đây được viết để thu thập các giá trị này:

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

Hướng dẫn

100 XP
  • Thay thế vòng lặp for ở trên bằng NumPy:
    • Tạo một mảng tổng chỉ số (total_stats_np) bằng phương thức .sum() và chỉ định đúng axis.
    • Tạo một mảng trung bình chỉ số (avg_stats_np) bằng phương thức .mean() và chỉ định đúng axis.
    • Tạo danh sách đầu ra cuối cùng (poke_list_np) bằng cách kết hợp danh sách names, mảng total_stats_np, và mảng avg_stats_np.