我无法找出为什么any()在这里不返回True的原因。我认为它可能与numpy.any有关,而不是像here建议的那样与内置的any()函数有关。但是,我也尝试过将any称为__builtins __。any,但它仍然返回False。
将numpy导入为np
import numpy as np
VCI=20
anom_con = [10,20,35,50]
print VCI<anom_con[3]
print VCI<any(anom_con)
返回:
True
False
有趣的是,我还在代码的其他地方使用了any(),并且在这里可以正常工作:
z=-0.668
z_con = [-2,-1.5,-1,1,1.5,2]
print z < any(z_con)
返回:
True
答案 0 :(得分:3)
any
会按预期工作,而不是您预期会工作。
any
一旦找到一个计算结果为True
的元素,就会返回True
。如果是数字,则表示一旦找到非零元素,它将立即返回True
。
您要写的是第一个示例中的any(num > VCI for num in anom_con)
和第二个示例中的any(num > z for num in z_con)
。
事实
z = -0.668
z_con = [-2,-1.5,-1,1,1.5,2]
print z < any(z_con)
输出“正确”的输出纯粹是巧合。它打印True
是因为:
any(z_con)
的值为True
(因为z_con
至少有一个非零数字)z < True
的值为True
,因为True
的基础值为1,而-0.668 < 1
为True
。