Я пытаюсь поближе познакомиться с модулем itertools
и обнаружил функцию с именем ifilter
.
. Насколько я понимаю, он фильтрует и повторяет на основе данной функции и возвращает итератор.над списком, содержащим элементы итерируемого элемента, для которого функция оценивается как True
.
Вопрос 1 : правильное ли мое понимание до сих пор?
Вопрос 2 : кроме того, что это возвращает и итератор, как этоотличается от встроенной функции filter
?
Вопрос 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]