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中跳过多次迭代
您可以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)