如何在for循环中跳过特定迭代?
基本上,我有一个嵌套的循环,也就是一个循环里面还有一个循环。在里面的循环中,会发生一些事情,我可以跳过3、4、5次,或者我需要跳过的任意次数。但是我不能对外面的循环做同样的事情。希望这样说能让你明白。
这是我的代码:
phraseArray = []
phraseArray2 = []
counterAdd = 0
counter = 0
try:
for i in range(len(wordArray)):
for j in range(len(wordArray2)):
if wordArray[i]==wordArray2[j]:
counter = 0
counter2=3
while True:
if wordArray[i+counter]==wordArray2[j+counter]:
counter = counter+1
if counter==3:
phraseArray.append(wordArray[i+0])
phraseArray.append(wordArray[i+1])
phraseArray.append(wordArray[i+2])
elif counter>3:
phraseArray.append(wordArray[i+counter2])
counter2 = counter2+1
else:
phraseArray.append(" ")
j=j+counter
break
except IndexError:
print phraseArray2
这里的 j = j + 1 是用来跳过某些循环次数的。我不能对外面的循环做同样的事情,因为里面的循环会改变计数器的变量,这个变量决定了需要跳过多少次循环。有什么建议吗?
提前谢谢大家!:)
3 个回答
2
你不能在外层循环中使用“break”,因为这样会结束整个循环,而不是跳过它。你可以使用一些IF语句来控制你想要的情况。可以这样做:
if(condition=skip):
#do nothing
else:
# do
3
跳过循环中多次迭代的一种通用方法可以这样实现。
skips = 0
for x in y:
if skips:
skips -= 1
continue
#do your stuff
#maybe set skips = something
3
在这里,我会使用迭代器。
import itertools
def skip(iterable, n):
next(itertools.islice(iterable, n, n), None)
outer_numbers = iter(range(...))
for i in outer_numbers:
inner_numbers = iter(range(...))
for j in inner_numbers:
if condition:
skip(outer_numbers, 3) # skip 3 items from the outer loop.
skip(inner_numbers, 2) # skip 2 items from the inner loop.
当然,你可能会想用到或需要 continue
和/或 break
语句。