控制for循环(python)

时间:2012-07-26 15:36:55

标签: python for-loop

我有一个程序,在另一个for循环中包含一个for循环,它产生一行,我有一个if语句,检查行中的一个键。

这是一个例子

list1=[var1,var2,var3]

list2 = [file1,file2,file3]


for v in list1:
     //do stuff that returns a string, string.splitlines()
    for f in list2:
        for line in string  
           if key in line and f in line:
               print "line"
              break
           else:
              continue

我得到了我正在寻找的结果,但是我想要控制循环,我的意思是在第一次迭代中我们有var1并且它将循环遍历file1,file2和file3然后下一次迭代var2并且它将循环遍历file1,file2,file3等等

我如何更改它,以便在找到该行时,它不会进一步使用var1而是采用var2然后继续?我试过跟着

i = iter(list1)
j = iter(list2)

以及后面的打印行

if key in line and f in line:
     print "line"
     i.next()
     j.next()
     break

但这似乎没有做任何事情,有关如何实现这一目标的任何提示?

4 个答案:

答案 0 :(得分:5)

我建议将内部两个循环放入一个适当命名的函数中。找到密钥后,从函数返回。

list1=[var1,var2,var3]

list2 = [file1,file2,file3]

for v in list1:
     //do stuff that returns a string, string.splitlines()
    find_line(string)

然后:

def find_line(string):
    for f in list2:
        for line in string  
           if key in line and f in line:
               print "line"
               return
           else:
              continue

答案 1 :(得分:1)

您可以使用变量来控制嵌套循环的中断:

for v in list1:
     //do stuff that returns a string, string.splitlines()
    done = False
    for f in list2:
        if done = True:
            break
        for line in string  
           if key in line and f in line:
              print "line"
              done = True
              break
           else:
              continue

答案 2 :(得分:0)

您可以设置一个标记来表示您找到它的时间。

for v in list1:
 //do stuff that returns a string, string.splitlines()
    flag = False
    for f in list2:
        for line in string:
           if key in line and f in line:
               print "line"
               flag = True
               break
        if flag:
            break

答案 3 :(得分:0)

最愚蠢的解决方案是布尔值

作为

for v in list1:
    # do your code here
    foundCurrentVar = False
    for f in list2:
         if foundCurrentVar: break
         for line in string  
             if key in line and f in line:
                print "line"
                foundCurrentVar = True
                break
             else:
                continue