Я пытаюсь понять значение функций itertools.ifilter() и itertools.islice(), чтобы понять, что такое генераторы.itertools ifilter и islice function and generatorators
import itertools
def is_even(x):
print('is_even called for {}'.format(x))
return (x%2 == 0)
def even():
return filter(is_even,range(20))
def even_ex():
return itertools.ifilter(is_even,range(20))
#return filter(is_even,range(20))
unlazy_even = even()[:4]
lazy_even = even_ex()
first_four = itertools.islice(lazy_even,0,4)
print('unlazy even {} lazy even {}'.format(unlazy_even,lazy_even))
for item in first_four:
print(item)
Проблема в том, что я действительно хотел бы использовать python 3.5. Но функция itertools.ifilter отсутствует в python 3.5. Также фильтр возвращает filter object
вместо списка в python 3.5. Как преобразовать вышеуказанную программу в Python 3.5.