Рассмотрим more_itertools.stagger
:
С учетом
import itertools as it
import more_itertools as mit
iterable = [0, 1, 2, 3, 5]
код
Получить все результаты от раздвижных окон:
windows = list(mit.stagger(iterable, offsets=(0, 1, 2, 3), longest=True, fillvalue=0))
windows
# [(0, 1, 2, 3), (1, 2, 3, 5), (2, 3, 5, 0), (3, 5, 0, 0), (5, 0, 0, 0)]
Далее отфильтруйте желаемые результаты:
[w for i, w in enumerate(windows) if not (i % 2)]
# [(0, 1, 2, 3), (2, 3, 5, 0), (5, 0, 0, 0)]
или срез итерация:
list(it.islice(windows, 0, None, 2))
# [(0, 1, 2, 3), (2, 3, 5, 0), (5, 0, 0, 0)]