Фильтрация до последнего истинного (или с первого ложного) элемента

Если необходимо отобрать объекты, стоящие после неудовлетворяющего условию элемента, используем itertools.dropwhile():

>>> list(itertools.dropwhile(filter_func, numbers))
[2, 3, 2, 1, 0]

Метод itertools.takewhile() наоборот выведет элементы, удовлетворяющие условию вплоть до объекта, прерывающего цепочку истинных элементов:

>>> list(itertools.takewhile(filter_func, numbers))
[0, 1]