Просто с помощью индекса нарезать массив и переместить окно на один шаг.Перерыв, когда размер окна меньше ожидаемого
a=[1,2,3,4,5,6,7,8,9]
def slicing_window(a,n):
new_arr=[]
if(len(a)<n):
return a
for i in range(0,len(a)):
if len(a[i:i+n])==n:
new_arr.append(a[i:i+n])
else:
break
return new_arr
slicing_window(a,3)
Вывод:
[[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8], [7, 8, 9]]
ИЛИ
from toolz import sliding_window
list(sliding_window(3, a))# will generate tuples
Если вас интересует просто список
from toolz import sliding_window
map(list,sliding_window(3, a))