Python any () условие не возвращает правильный вывод - PullRequest
0 голосов
/ 30 апреля 2019

Я не могу выяснить, почему any () не возвращает True здесь. Я думаю, что это может иметь какое-то отношение к numpy.any вместо встроенной функции 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 Ответ

3 голосов
/ 30 апреля 2019

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 < 1 равно True.
...