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

问题描述 投票:0回答:1

我无法找到为什么any()在这里没有返回True。我认为这可能与numpy.any有关,而不是内置的any()函数,如here建议的那样。但是,我也试过调用任何__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
python boolean logic any
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.