itertools.ifilter Vs. фильтр Vs. понимание списка

Я пытаюсь ближе познакомиться с модулем itertools и нашел функцию под названием ifilter .

Насколько я понимаю, он фильтрует и выполняет итерацию на основе заданной функции и возвращает итератор по списку, содержащему элементы итерации, на которых функция оценивает значение True .

Вопрос 1 : правильно ли я понял?

Вопрос 2 : помимо того факта, что это возвращает и итератор, чем он отличается от встроенного фильтра функция?

Вопрос 3 Что быстрее?

Насколько я могу судить, это не так. Я что-то упускаю? (Я провел следующий тест)

>>> itertools.ifilter(lambda x: x%2, range(5))
<itertools.ifilter object at 0x7fb1a101b210>
>>> for i in itertools.ifilter(lambda x: x%2, range(5)): print i
... 
1
3
>>> filter(lambda x: x%2, range(5))
[1, 3]
>>> function = lambda x: x%2
>>> [item for item in range(5) if function(item)]
[1,3]
25
задан BSMP 9 August 2018 в 00:54
поделиться