Почему не выводится 8 в списке?
Я только ввел 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]
Чтение документации 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]