Dlaczego Numpy.all () i any () dają błędne wyniki, jeśli używasz wyrażeń generujących?

Pracując z czyimś kodem natknąłem się na ten błąd. Jakie jest zatem wyjaśnienie zachowania numpy?

In [1]: import numpy as np

In [2]: foo = [False, False]

In [3]: print np.any(x == True for x in foo)
True  # <- bad numpy!

In [4]: print np.all(x == True for x in foo)
True  # <- bad numpy!

In [5]: print np.all(foo)
False  # <- correct result

p.s. Dostałem tutaj kod rozumienia listy:Sprawdź, czy lista zawiera tylko element x

questionAnswers(1)

yourAnswerToTheQuestion