Mit %mprun: Hero BMI
Du möchtest den Body-Mass-Index (BMI) für eine ausgewählte Gruppe von Helden berechnen. Der BMI kann mit der folgenden Formel berechnet werden:

Eine zufällige Auswahl von 25.000 Superhelden wurde in deine Sitzung als Array namens „ sample_indices ” geladen. Dieses Beispiel ist eine Liste von Indizes, die den Indizes der einzelnen Superhelden aus der Liste „ heroes “ entsprechen.
Eine Funktion namens „ calc_bmi_lists “ wurde auch erstellt und in einer Datei namens „ bmi_lists.py “ gespeichert. Zur Vereinfachung wird es unten angezeigt:
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
Beachte, dass diese Funktion alle notwendigen Berechnungen mit Hilfe von Listenkomprimierung durchführt (daher der Name „ calc_bmi_lists() “). Schau dir diese Funktion genauer an und überprüfe, wie viel Speicherplatz deine Berechnungen mit Listen brauchen:
- Lade das Paket „
memory_profiler” in deine IPython-Sitzung. - Importiere
calc_bmi_listsausbmi_lists. - Wenn du die obigen Schritte erledigt hast, kannst du mit „
%mprun” die Funktion „calc_bmi_lists()” profilieren, die auf deine Superhelden-Daten angewendet wird. Die Arrays „hts“ und „wts“ sind schon in deine Sitzung geladen worden.
Wenn du mit dem Programmieren fertig bist, beantworte bitte die folgende Frage:
Wie viel Speicher brauchen die Codezeilen für die Listenkomprimierung in der Funktion „ calc_bmi_lists() “? (Also, wie viel steht in der Spalte „ Increment “ für diese vier Codezeilen zusammen?)
Diese Übung ist Teil des Kurses
Effizienten Python-Code schreiben
Interaktive Übung
In dieser interaktiven Übung kannst du die Theorie in die Praxis umsetzen.
Übung starten