all()返回一个发电机?

usu*_* me 3 python iterator generator

所以我想测试列表是否已排序.阅读本页后,我这样做了:

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:]) )
Run Code Online (Sandbox Code Playgroud)

产量

<generator object <genexpr> at 0x10d9ecaa0>
Run Code Online (Sandbox Code Playgroud)

好的,所以all()返回发电机.但这是Python文档所说的all():

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

我错过了什么?

Vee*_*rac 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>
Run Code Online (Sandbox Code Playgroud)

Python的all工作正常.

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

import __builtin__
__builtin__.all(b >= a for a, b in zip(ll, ll[1:]))
Run Code Online (Sandbox Code Playgroud)