all()返回一个发电机?

时间:2014-02-14 15:19:40

标签: python iterator generator

所以我想测试列表是否已排序。阅读完page之后,我做到了这一点:

ll = [ 0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15 ]
all(b >= a for a, b in zip(ll, ll[1:]) )

输出

<generator object <genexpr> at 0x10d9ecaa0>

好的,all()返回一个生成器。但这就是Python文档中关于all()所说的内容:

  

如果iterable的所有元素都为真(或者如果是),则返回True   iterable是空的)

我缺少什么?

1 个答案:

答案 0 :(得分:11)

这是那些愚蠢的明星进口问题:

from numpy import *

ll = [ 0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15 ]
all(b >= a for a, b in zip(ll, ll[1:]) )
#>>> <generator object <genexpr> at 0x7f976073fdc0>

Python的all工作正常。

您可以通过python2中的__builtin__模块和python3中的builtins模块访问它:

import __builtin__
__builtin__.all(b >= a for a, b in zip(ll, ll[1:]))