【发布时间】:2016-03-05 18:05:03
【问题描述】:
现在,在我的代码中,我有两个列表:aboveAdj1 和 aboveAdj2,它们要么包含 1 和 0,要么为空:
if len(aboveAdj1) and len(aboveAdj2):
perAboveFix = 100*int(sum(aboveAdj1) + sum(aboveAdj2))/int(len(aboveAdj1) + len(aboveAdj2))
如果aboveAdj1 和aboveAdj2 都不为空或全为零,那么我想计算比率。如果另一个变量为空,是否有一种有效/简短的方法可以仅基于一个变量计算比率,而无需编写一堆if 语句?
例如,如果aboveAdj1 为空或全为零,则计算:
perAboveFix = 100*int(sum(aboveAdj2))/int(len(aboveAdj2))
反之亦然。
【问题讨论】:
-
这行得通吗?
if len(aboveAdj1) and len(aboveAdj2) and sum(aboveAdj1) and sum(aboveAdj2):我不完全理解你的问题 -
“aboveAdj1 为零”是什么意思?你的意思是所有的值都是零?
-
如果您要测试的唯一选项是
aboveAdj1为空或aboveAdj1用零填充,您可以使用if sum(aboveAdj1): do_stuff。一个空列表或一个用零填充的列表的总和是0是 Falsey。 -
对不起,我的意思是它是空的还是全零
-
any(aboveAdj1)比sum快一点点。
标签: python arrays performance list if-statement