Cycle Through A List While Skipping Elements (python)

23 March 2022 - 1 answer

I'm trying to find a way of going through a loop of a single list skipping the first element each time.

so for example, if I have a list:

``````lst = [0,1,2,3,4,5,6]
``````

and wish to use a for loop to cycle through all but the first element and stop at an arbitrary point. So if I wish to start at index 1 of lst and advance through a cycle of each element (excluding the first) I can use the following:

``````scd = [1,2,3,4,5,6]
out = []
for i in range (1,14+1):
if (i%len(lst)) not in scd:
continue
else:
out.append(lst[i%len(lst)])
print(out)
``````

it returns a list with only 12 elements:

``````[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
``````

The output that I'm trying to get is:

``````[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2]
``````

I know the issue is in using the `continue` in the for loop, but I'm struggling with a workaround that gets me the desired output.

Any help would be greatly appreciated. also if there's a more pythonic way of going about this problem, I'm all ears.

Thanks so much.

IIUC, you simply want to repeat the same list, right? How about this where you could concatenate lists using `divmod`:

``````num = 14
i,j = divmod(num, len(lst)-1)
out = lst[1:] * i + lst[1:1+j]
``````

Output:

``````[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2]
``````