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

Connected

道练习

使用 %mprun:英雄 BMI

您想为一组选定的英雄计算体重指数(BMI)。BMI 的计算公式如下:

BMI = mass(kg) / height(m)^2

已经将 25,000 名超级英雄的随机样本加载到您的会话中,数组名为 sample_indices。该样本是与 heroes 列表中被选英雄的索引一一对应的索引列表。

名为 calc_bmi_lists 的函数也已创建,并保存在名为 bmi_lists.py 的文件中。为方便起见,现展示如下:

def calc_bmi_lists(sample_indices, hts, wts):

    # Gather sample heights and weights as lists
    s_hts = [hts[i] for i in sample_indices]
    s_wts = [wts[i] for i in sample_indices]

    # Convert heights from cm to m and square with list comprehension
    s_hts_m_sqr = [(ht / 100) ** 2 for ht in s_hts]

    # Calculate BMIs as a list with list comprehension
    bmis = [s_wts[i] / s_hts_m_sqr[i] for i in range(len(sample_indices))]

    return bmis

请注意,该函数使用列表推导完成所有必要计算(因此命名为 calc_bmi_lists())。更深入地查看该函数,并分析使用列表执行计算时的内存占用:

  • 将 memory_profiler 包加载到您的 IPython 会话中。
  • 从 bmi_lists 导入 calc_bmi_lists。
  • 完成上述步骤后,使用 %mprun 对作用于您的超级英雄数据的 calc_bmi_lists() 函数进行分析。 hts 数组和 wts 数组已预先加载到您的会话中。

完成编码后,请回答以下问题:

列表推导代码行在 calc_bmi_lists() 函数中共消耗了多少内存?(即,将这四行代码的 Increment 列求和得到的总量是多少?)

说明

50 XP

答案选项