我有以下代码:
for i in list1:
if i == 5:
#skip the NEXT iteration (not the end of this one)
else:
#do something
如何跳过抛出跳过的迭代之后的迭代。例如,如果list1=[1, 2, 3, 4, 5, 6, 7]
,循环将跳过6并直接转到7,因为5触发了跳过
我已经看过this问题和其他几个问题,但它们都涉及跳过当前迭代,而我想跳过 next 迭代。这些问题的答案提示continue
,据我所知,它将停止当前迭代的剩余部分并继续下一个,这不是我想要的。如何在循环中跳过单个迭代?
修改:建议使用next()
,但这对我不起作用。当我运行以下代码时:
a = [1, 2, 3, 4, 5, 6, 7, 8]
ai = iter(a)
for i in a:
print i
if i == 5:
_ = next(ai)
我得到了
1
2
3
4
5
6 #this should not be here
7
8
使用next()
也是此问题中的建议:Skip multiple iterations in loop python
答案 0 :(得分:6)
您可以从列表中创建iterator
。有了这个,你可以在循环时改变循环项:
it = iter(list1)
for i in it:
if i == 5:
next(it) # Does nothing, skips next item
else:
#do something
如果您计划使用i==5
处的值,则在评估条件之前应do something
:
it = iter(list1)
for i in it:
#do something
if i == 5:
next(it) # Does nothing, skips next item
如果您在终端中执行此操作,则应将下一个项目分配给变量,因为终端可能强制在悬挂参考上进行自动打印:
>>> 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
答案 1 :(得分:0)
只需设置一个标志:
>>> 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
答案 2 :(得分:0)
runNext = True
for i in list1:
if i == 5:
runNext = False
else:
if runNext:
#do something
runNext = False