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

时间:2016-06-16 01:16:51

标签: python loops iteration

我有以下代码:

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

3 个答案:

答案 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
相关问题