小编mac*_*iej的帖子

Python内置"所有"与生成器

我对python的"all"和生成器有以下问题:

G = (a for a in [0,1])
all(list(G))   # returns False - as I expected
Run Code Online (Sandbox Code Playgroud)

但:

G = (a for a in [0,1])
all(G)         # returns True!
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释一下吗?

更新:我发誓我明白了!看一下这个:

In [1]: G = (a for a in [0,1])

In [2]: all(G)
Out[2]: True
Run Code Online (Sandbox Code Playgroud)

我使用Python 2.6.6和IPython 0.10.2,都安装在Python(x,y)包中.奇怪的是,当我使用Spider IDE时,我得到"True"(上图),而在纯控制台中,我得到"False"......

更新2:正如帝斯曼指出的那样,这似乎是一个尴尬的问题.Python(x,y)加载numpy,所有(G)实际上调用numpy.all(G)而不是内置all().一个快速的解决方法是写:

__builtins__.all(G)
Run Code Online (Sandbox Code Playgroud)

感谢大家的帮助!

-maciej

python numpy

5
推荐指数
3
解决办法
1351
查看次数

标签 统计

numpy ×1

python ×1