基本上,我有一个嵌套的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用于跳过某些迭代。我不能对外循环做同样的事情,因为内循环改变了计数器变量,它决定了需要跳过多少次迭代。有什么建议吗?
先谢谢你们! :)
答案 0 :(得分:3)
跳过循环的多次迭代的一般形式可以这样工作。
skips = 0
for x in y:
if skips:
skips -= 1
continue
#do your stuff
#maybe set skips = something
答案 1 :(得分: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
语句。
答案 2 :(得分:2)
你不能在外部循环中使用“break”,因为这将完成循环而不是跳过它,你可以做的是使用一些IF语句来控制你想要的情况。
之类的东西if(condition=skip):
#do nothing
else:
# do