如何跳过for循环中的特定迭代?

时间:2014-07-09 17:10:29

标签: python list loops iteration

基本上,我有一个嵌套的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 个答案:

答案 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