Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Python';s`any`函数不返回True或False?_Python_Python 3.x_Numpy_Any - Fatal编程技术网

为什么Python';s`any`函数不返回True或False?

为什么Python';s`any`函数不返回True或False?,python,python-3.x,numpy,any,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) 它返回false >> b = [2,3,4,5,6,7] >>> b [2, 3, 4, 5, 6, 7] >>> a = any(x<0 for x

如果我尝试

>>> from pylab import *
>>> b = [2, 3, 4, 5, 6, 7]
>>> a = any(x < 0 for x in b)  
>>> print(a)
它返回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
>b=[2,3,4,5,6,7]
>>>b
[2, 3, 4, 5, 6, 7]
>>>a=任意(x>>a
假的
>>>印刷品(a)
假的

您使用的是
numpy.any()
而不是内置的
any()
。很可能是
从numpy导入any
从numpy导入*
,这导致了此行为

为什么会发生这种情况?

根据,
any
测试是否有任何元素评估了条件。但是,如果您查看,它实际上会返回一个
asanarray()
结果,这是一个
生成器

如何避免它?

只导入
scope
而不是方法本身总是一个好主意,就像这样:
importnumpyasnp

:)

更新1


就我个人而言,我从未使用过
iPython
,但多亏@Praveen和@hpaulj的评论,如果您将
--pylab
标志与
iPython
一起使用,您将看到相同的行为,并且您可以关闭该行为-从来都不知道!)

请阅读这是你所有的代码吗?实际上,它确实产生了这个输出。两百个quatloos表示您使用的是
numpy.any
,而不是Python的
any
<代码>numpy。任何
都不能很好地使用生成器。在Python3.5和2.7上,代码打印出
False
。但是如果我使用
numpy.any
它会给出你的输出。使用
a=\uuuuu内置\uuuuuu.any(我已将图像编辑到问题中。请直接复制粘贴终端输出,而不是在将来提供指向图像的链接。这是一个很好的示例,说明了为什么“通配符导入(
来自导入*
)应该避免,因为它们会使名称空间中出现的名称不清楚,从而混淆读者和许多自动化工具。“是的-编辑答案后看到了您的评论:)))如果您以
ipython--pylab
的身份启动python,也可能会遇到此问题,许多科学编程教程都会指导您。@Praveen-我不知道,只是选中:)我想所有模块都是自动导入的。我想知道它是否会导致内置函数出现任何问题/冲突。可以使用
--pylab
-关闭
*
导入,但需要在设置中设置一个标志(或命令行中的选项)。
 >> 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