How to skip a single loop iteration in python?
Solution 1
You can create an iterator
from the list. With this, you can mutate the loop items while looping:
it = iter(list1)
for i in it:
if i == 5:
next(it) # Does nothing, skips next item
else:
#do something
In case you're planning to use the value at i==5
, you should do something
before the evaluating the condition:
it = iter(list1)
for i in it:
#do something
if i == 5:
next(it) # Does nothing, skips next item
If you're doing this in a terminal, you should assign the next item to a variable as the terminal may force an autoprint on a dangling reference:
>>> list1 = [1, 2, 3, 4, 5, 6, 7]
>>> it = iter(list1)
>>> for i in it:
... print(i)
... if i == 5:
... j = next(it) # here
...
1
2
3
4
5
7
Solution 2
Just set a flag:
>>> i
[0, 1, 2, 3, 4, 5, 6, 7]
>>> skip = False
>>> for q in i:
... if skip:
... skip = False
... continue
... if q == 5:
... skip = True
... print(q)
...
0
1
2
3
4
5
7
cat40
Updated on June 24, 2022Comments
-
cat40 almost 2 years
I have the following code:
for i in list1: if i == 5: #skip the NEXT iteration (not the end of this one) else: #do something
How do I skip the iteration that comes after the iteration that throws the skip. For example, if
list1=[1, 2, 3, 4, 5, 6, 7]
, the loop will skip 6 and go straight to 7 because 5 triggered the skip I've seen this question and several others, but they all deal with skipping the current iteration, while I want to skip the next iteration. The answers to those questions suggestcontinue
, which as far as I can tell will stop the remainder of the current iteration and move on to the next one, which is not what I want. How can I skip a single iteration in a loop?Edit: Using
next()
has been suggested, but this does not work for me. When I run the following code:a = [1, 2, 3, 4, 5, 6, 7, 8] ai = iter(a) for i in a: print i if i == 5: _ = next(ai)
I get
1 2 3 4 5 6 #this should not be here 7 8
Using
next()
is also the suggestion in this question: Skip multiple iterations in loop python