開始使用免費開始

使用 %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

請注意,這個函式使用「列表生成式」(list comprehension)完成所有必要的計算(因此命名為 calc_bmi_lists())。更深入檢視此函式,並分析用「清單」來執行計算時的記憶體使用量:

  • 在你的 IPython 工作階段中載入 memory_profiler 套件。
  • bmi_lists 匯入 calc_bmi_lists
  • 完成上述步驟後,使用 %mprun 來為 calc_bmi_lists() 函式在你的超級英雄資料上進行剖析。 hts 陣列與 wts 陣列已載入到你的工作階段中。

完成撰寫程式碼後,回答下列問題:

calc_bmi_lists() 函式中使用列表生成式的那些程式碼行,一共消耗了多少記憶體?(也就是這四行程式碼的 Increment 欄位總和是多少?)」

本練習屬於課程

撰寫高效的 Python 程式碼

檢視課程

動手互動練習

將理論付諸實踐,立即體驗我們的互動練習

開始練習