小编典典

如何理解python中的复杂列表

all

抱歉,这将是一个非常基本的问题,我正在学习 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] 但我找不到它的名称来了解它 - 这个名称是什么?它是列表推导的一部分吗?


阅读 72

收藏
2022-06-28

共1个答案

小编典典

仔细观察这条线

['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 即肥胖. 同样,它适用于其他条件。

2022-06-28