itertools.islice()
Возвращает срез итератора по индексам без создания промежуточного списка.
Сигнатура
itertools.islice(iterable, stop) / islice(iterable, start, stop, step=1)Аналог обычного среза seq[start:stop:step], но работает с любым итерируемым объектом, включая бесконечные. Отрицательные индексы не поддерживаются. Незаменим для ограничения бесконечных итераторов вроде count().
import itertools
print(list(itertools.islice(range(10), 5))) # [0, 1, 2, 3, 4]
print(list(itertools.islice(range(10), 2, 8, 2))) # [2, 4, 6]