为什么Python的“any”函数不返回True或False?

时间:2016-09-06 19:01:03

标签: python python-3.x numpy any

如果我尝试

>>> from pylab import *
>>> b = [2, 3, 4, 5, 6, 7]
>>> a = any(x < 0 for x in b)  
>>> print(a)

它不会返回TrueFalse

返回

<generator object <genexpr> at 0x7fbd62129ab0>

2 个答案:

答案 0 :(得分:4)

您使用的是numpy.any(),而不是内置的any()。很可能你有from numpy import anyfrom numpy import *,这会导致这种行为。

为什么会这样?

根据documentationany测试是否有任何元素评估条件。但是,如果您查看source code,它实际上会返回asanarray()结果generator

如何避免?

最好只导入scope而不是方法本身,如下所示:import numpy as np

:)

更新1

就我个人而言,我从未使用iPython,但感谢@Praveen和@hpaulj的评论,如果您使用--pylab标记ipython,您会看到相同的行为,你可以拒绝这种行为 - 从来不知道! :)))

答案 1 :(得分:2)

返回false

 >> b = [2,3,4,5,6,7]
 >>> b
 [2, 3, 4, 5, 6, 7]
 >>> a = any(x<0 for x in b)
 >>> a
 False
 >>> print(a)
 False