尝试追加时,Python始终返回空白列表?

问题描述

python的新手,并尝试学习循环。尝试从两个列表中获取值来计算每个人的BMI,但一直得到一个空白列表。

heights = [184,177,190,188,159,166]

weights = [84.9,81.8,86.1,92.2,69.6,72.0 ]

BMIS = []

for i,bmi in BMIS:

  BMIS.append(weights[i] / heights[i])

print(BMIS)

解决方法

您正在遍历BMIS,这是一个空列表。遍历高点或权重

heights = [184,177,190,188,159,166]
weights = [84.9,81.8,86.1,92.2,69.6,72.0 ]
BMIS = []
for i in range(len(heights)):
    BMIS.append(weights[i] / heights[i])
 print(BMIS)
,

您要遍历的列表中没有任何内容。 for循环主体中的代码将永远不会执行。您可以将for循环更改为:

for height,weight in zip(heights,weights):
    BMIS.append(weight/height)
,

您正在遍历一个空列表。只需使用zip一次遍历每个列表即可。

for height,weights):
    BMIS.append(weight / height)

此理解将产生相同的列表:

BMIS = [weight/height for height,weights)]
,

假设权重列表的高度始终具有相同的len(),则可以循环使用它作为范围

heights = [184,166]

weights = [84.9,72.0 ]

BMIS = []

for i in range(len(heights)):

  BMIS.append(weights[i] / heights[i])

print(BMIS)
,

欢迎使用StackOverFlow。让我们检查一下您的main for循环:

for i,bmi in BMIS:

  BMIS.append(weights[i] / heights[i])

自初始化BMIS = []以来,您正在遍历一个空列表。更好的方法是在如下范围内进行迭代:

for i in range(0,len(heights)):
    BMIS.append(weights[i] / heights[i])

这样,您将获得每个列表的第i个位置,进行除法并将结果添加到BMIS列表中。