I am trying to become more familiar with the itertools module and have found a function called ifilter.
From what I understand, it filters
Here, you can see the diference:
filter(function, iterable): Construct a list from those elements of iterable for which function returns true.
itertools.ifilter(predicate, iterable): Make an iterator that filters elements from iterable returning only those for which the predicate is True.
This means that to obtain 'ifiltered' items you should iterate with returned iterator, but 'filter' returns all elements in a list with out iteration needed.