Почему не выводится 8 в списке?

Почему в данном коде не выводится 8?
>>> from itertools import takewhile
>>> nums = [2,4,6,7,9,8]
>>> a = takewhile(lambda x:x%2==0,nums)
>>> print(list(a))
[2, 4, 6]

ведь
>>> 8%2
0
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 2
DDDsa
@DDDsa
Я только ввел help(takewhile), а там сразу ответ на ваш вопрос : )
>>> from itertools import takewhile
>>> help(takewhile)
Help on class takewhile in module itertools:

class takewhile(builtins.object)
 |  takewhile(predicate, iterable) --> takewhile object
 |
 |  Return successive entries from an iterable as long as the
 |  predicate evaluates to true for each entry.

Как только предикат обращается в False, процесс прекращается
Попробуйте со списком [2, 3, 2, 2, 2, 2]
Ответ написан
NeiroNx
@NeiroNx
Программист
Чтение документации https://docs.python.org/2/library/itertools.html помогло найти подходящие функции.
>>> import itertools
>>> print(list(itertools.ifilter(lambda x:x%2==0,[2,4,6,7,9,8])))
[2, 4, 6, 8]
>>> print(list(itertools.ifilterfalse(lambda x:x%2,[2,4,6,7,9,8])))
[2, 4, 6, 8]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы