2014-02-14 3 views
3

Итак, я хочу проверить, отсортирован ли список. После прочтения этой 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():

Возвращает True, если все элементы Iterable являются истинными (или если итерацию пусто)

Что мне не хватает?

+0

Не на Python 2.7.5, я получил Ложные ... – IProblemFactory

+0

я получаю 'false' как в python2 и 3 –

+0

Невозможно воспроизвести. Пожалуйста, дайте [SSCCE] (http://sscce.org/). – delnan

ответ

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> 

all Питон работает отлично.

Вы можете получить доступ к нему с помощью __builtin__ модуля в python2 и builtins модуля в Python3:

import __builtin__ 
__builtin__.all(b >= a for a, b in zip(ll, ll[1:])) 
Смежные вопросы