抱歉,这将是一个非常基本的问题,我正在学习 python。
我进行了一次编码练习来计算 bmi,并采用了一种简单的方法:
def bmi(weight, height): bmi = weight / height ** 2 if bmi <= 18.5: return "Underweight" elif bmi <= 25: return "Normal" elif bmi <= 30: return "Overweight" else: return "Obese"
但是,在练习解决方案中,我也看到了这个:
def bmi(weight, height): b = weight / height ** 2 return ['Underweight', 'Normal', 'Overweight', 'Obese'][(b > 30) + (b > 25) + (b > 18.5)]
我想了解这个双重/背靠背列表是什么,他们有 [items] [conditions] 但我找不到它的名称来了解它 - 这个名称是什么?它是列表推导的一部分吗?
仔细观察这条线
['Underweight', 'Normal', 'Overweight', 'Obese'][(b > 30) + (b > 25) + (b > 18.5)]
上面的 line 实际上是 list indexing [(b > 30) + (b > 25) + (b > 18.5)]这给出了 list 的索引['Underweight', 'Normal', 'Overweight', 'Obese']。让我们说 b > 30 那么它满足所有三个条件(b > 30) + (b > 25) + (b > 18.5)每个条件的等效布尔值为 1 使总和为 3 并返回索引 3 即肥胖. 同样,它适用于其他条件。
[(b > 30) + (b > 25) + (b > 18.5)]
['Underweight', 'Normal', 'Overweight', 'Obese']