Python any()条件未返回正确的输出

时间:2019-04-30 12:36:27

标签: python boolean logic any

我无法找出为什么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

1 个答案:

答案 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是因为:

  1. any(z_con)的值为True(因为z_con至少有一个非零数字)
  2. z < True的值为True,因为True的基础值为1,而-0.668 < 1True