如何在python中跳过单循环迭代?

cat*_*t40 2 python iteration loops

我有以下代码:

for i in list1:
    if i == 5:
        #skip the NEXT iteration (not the end of this one)
    else:
        #do something
Run Code Online (Sandbox Code Playgroud)

如何跳过抛出跳过的迭代后的迭代.例如,如果list1=[1, 2, 3, 4, 5, 6, 7],循环将跳过6并直接转到7因为5触发跳过我已经看到了这个问题和其他几个,但它们都处理跳过当前迭代,而我想跳过一次迭代.这些问题的答案表明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)
Run Code Online (Sandbox Code Playgroud)

我明白了

1
2
3
4
5
6 #this should not be here
7
8
Run Code Online (Sandbox Code Playgroud)

使用next()也是这个问题的建议:在循环python中跳过多次迭代

Mos*_*oye 7

您可以iterator从列表中创建一个.有了这个,你可以在循环时改变循环项:

it = iter(list1)
for i in it:
    if i == 5:
        next(it) # Does nothing, skips next item
    else:
        #do something 
Run Code Online (Sandbox Code Playgroud)

如果您计划使用at值i==5,则应do something在评估条件之前:

it = iter(list1)
for i in it:
    #do something
    if i == 5:
        next(it) # Does nothing, skips next item
Run Code Online (Sandbox Code Playgroud)

如果您在终端中执行此操作,则应将下一个项目分配给变量,因为终端可能会强制在悬挂引用上进行自动打印:

>>> 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
Run Code Online (Sandbox Code Playgroud)