I have a Python list. Here is an example:
seq = [0, 1, 2, 3, 4, 5]
Now I would like to iterate over the list with a window. For example, with a window of size 3 I can do it as follows:
window_size = 3
for i in range(len(seq) - window_size + 1):
print(seq[i: i + window_size])
This would result in the following output:
[0, 1, 2]
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
Now, I would like to also include the burn-in phase, i.e. lists with less than window_size elements. The output should be as follows:
[0]
[0, 1]
[0, 1, 2]
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
How can my code be extended to do this most efficiently (also for bigger lists and bigger window_size)?
There are good answers already to this question, but just wanted to share another method using only 1 loop to do the same.
window_size = 3
arr = [0, 1, 2, 3, 4, 5]
for x in range(1, len(arr)+1):
if x < window_size:
print(arr[:x])
else:
print(arr[x-window_size:x])
Output:
[0]
[0, 1]
[0, 1, 2]
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]