Python 为什么这两种列表理解会产生不同的结果?

Python 为什么这两种列表理解会产生不同的结果?,python,Python,我正在编写一个函数来确定两个统计数据(在本例中是年龄和医疗保险成本)之间的相关系数,我在谷歌上搜索了如何使用列表理解来对嵌套字典中的值求和。教程告诉我要使用: average\u age=sum(数据[i][stat1]表示数据中的i,如果i)/len(数据) 但是没有对if i部分进行解释。我还尝试: average\u age=sum(数据[i][stat1]表示数据中的i)/len(数据) 结果略有不同(39.207025对39.19282)。如果i是一个整数,如何在If语句中使用它?在这

我正在编写一个函数来确定两个统计数据(在本例中是年龄和医疗保险成本)之间的相关系数,我在谷歌上搜索了如何使用列表理解来对嵌套字典中的值求和。教程告诉我要使用:

average\u age=sum(数据[i][stat1]表示数据中的i,如果i)/len(数据)

但是没有对
if i
部分进行解释。我还尝试:

average\u age=sum(数据[i][stat1]表示数据中的i)/len(数据)

结果略有不同(39.207025对39.19282)。如果
i
是一个整数,如何在If语句中使用它?在这种情况下,if语句是什么意思?

遗嘱的if部分决定是否包含该元素

在下面的示例中,您可以看到,如果将if零件保留在那里,则任何零都将从结果列表中排除,而如果没有if零件,则零也将包括在内。如果您看到
如果x
并且x是一个整数,那么它的行为将与
如果x!=0
,使其更易于理解

>[x表示(3,2,1,0,-1)中的x,如果x]
[3, 2, 1, -1]
>>>[x代表(3,2,1,0,-1)中的x]
[3, 2, 1, 0, -1]

python中的整数可以用于条件,因为在这种情况下,除非为零,否则它的计算结果将为真。

请给出一个示例数据——否则,结果是不可测的,这是无法回答的……但为了解释为什么结果不同,它们是不同的,因为在第一种情况下,您的一些数据被排除在
sum
操作之外,而在第二种情况下则没有。从技术上讲,这些实际上是生成器表达式-列表理解总是在[]内。要理解这一点,您只需打印这两个表达式,例如
print(list(数据[i][stat1]表示数据中的i,如果i))
打印(列表(数据[i][stat1]表示数据中的i))
假设
数据中的一些条目是错误的,你会看到它们是不同的列表-当然,如果没有一个是错误的,那么列表将是相同的。如果使用
来对除行(或列)以外的所有条目进行求和,这看起来几乎像
0,哪些可能是标题?我也可能是字符串,但相同的消除标题行/列仍然适用。我知道您的意思与您在最后一个语句中所说的有点不同。您的语句意味着布尔上下文中使用的整数始终等于
True
。当然,这不是真的。您应该更新y我们的回答是:“.当它的值为
0
时,它将计算为
False
,而在任何其他情况下,
True
。@Steve是的。我打字太快了,所以一个重要部分掉到了那里。我想我明白了。所以如果索引(I)如果为零,那么它就不会包含在数据中?哦,不,不是索引,而是值。我的例子选得不好。