1. Learn
  2. /
  3. Cursuri
  4. /
  5. Scriere eficientă a codului Python

Connected

exercițiu

Folosirea %mprun: IMC-ul eroilor

Vrei să calculezi indicele de masă corporală (IMC) pentru un eșantion selectat de eroi. IMC-ul poate fi calculat folosind formula de mai jos:

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

Un eșantion aleatoriu de 25.000 de supereroi a fost încărcat în sesiunea ta sub forma unui array numit sample_indices. Acest eșantion este o listă de indici care corespund indexului fiecărui supererou selectat din lista heroes.

O funcție numită calc_bmi_lists a fost creată și salvată într-un fișier numit bmi_lists.py. Pentru ușurință, o găsești afișată mai jos:

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

Observă că această funcție efectuează toate calculele necesare folosind list comprehension (de aici și numele calc_bmi_lists()). Explorează mai în detaliu această funcție și analizează amprenta de memorie pentru calculele efectuate cu liste:

  • Încarcă pachetul memory_profiler în sesiunea ta IPython.
  • Importă calc_bmi_lists din bmi_lists.
  • După ce ai finalizat pașii de mai sus, folosește %mprun pentru a profila funcția calc_bmi_lists() aplicată pe datele supereroilor tăi. Arrayul hts și arrayul wts au fost deja încărcate în sesiunea ta.

După ce ai terminat de scris codul, răspunde la următoarea întrebare:

Câtă memorie consumă liniile de cod cu list comprehension din funcția calc_bmi_lists()? (adică, care este suma totală a coloanei Increment pentru aceste patru linii de cod?)

Instrucțiuni

50 XP

Răspunsuri posibile