1. Learn
  2. /
  3. 课程
  4. /
  5. 高效编写 Python 代码

Connected

道练习

不使用循环计算宝可梦总分与均分

一个包含 720 只宝可梦的列表已加载为 names。对应的每只宝可梦的统计数据已作为一个 NumPy 数组加载为 stats。stats 的每一行对应 names 中的一只宝可梦,每一列分别表示单项能力值(依次为 HP、Attack、Defense、Special Attack、Special Defense、Speed)。

您希望汇总每只宝可梦的总能力值(即 stats 中每一行的和)以及平均能力值(即 stats 中每一行的均值),以便找出最强的宝可梦。

下面的 for 循环用于收集这些数值:

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

说明

100 XP
  • 使用 NumPy 替换上面的 for 循环:
    • 使用 .sum() 方法并指定正确的轴,创建总分数组(total_stats_np)。
    • 使用 .mean() 方法并指定正确的轴,创建均分数组(avg_stats_np)。
    • 将 names 列表、total_stats_np 数组和 avg_stats_np 数组合并,创建最终输出列表(poke_list_np)。