首页 > 解决方案 > 如何使用列表推导计算嵌套列表的 bmi?

问题描述

这是列表>

person_data = [
              ['John', 84.9, 184],
              ['Ryan', 81.8, 177],
              ['Bobby', 86.1, 190],
              ['Lambda Llama', 140, 180],      # Name, Weights, Heights
              ['Pete', 92.2, 188],
              ['Esther', 69.6, 159],
              ['Jane', 72.0, 166],
              ['Samantha', 51.3, 162]
              ]

这是我目前能做的。

BMI = [person_data[0][1]/((person_data[0][2]/100)**2)
      for i in person_data]

结果是

[25.07679584120983,
 25.07679584120983,
 25.07679584120983,
 25.07679584120983,
 25.07679584120983,
 25.07679584120983,
 25.07679584120983,
 25.07679584120983]

但是,我希望列表理解能够遍历所有人的体重和身高。只为第一个嵌套列表执行此操作。请帮忙。

标签: pythonlist-comprehension

解决方案


您没有在i任何地方使用迭代变量。每个项目都是一个人(属性列表),因此您需要执行以下操作:

BMI = [person[1]/((person[2]/100)**2) for person in person_data]

结果:

[25.07679584120983,
 26.109993935331477,
 23.850415512465375,
 43.20987654320987,
 26.086464463558173,
 27.530556544440483,
 26.1286108288576,
 19.547325102880652]

推荐阅读