4

我有一个程序,它在另一个 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,它将循环遍历文件 1、文件 2、文件 3 以此类推

我将如何更改它,以便当它找到该行时,它不会继续使用 var1 而是使用 var2 然后继续?我试过以下

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

以及打印行之后的以下内容

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

但这似乎没有任何作用,关于如何实现这一点的任何提示?

4

4 回答 4

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
于 2012-07-26T15:44:26.440 回答
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
于 2012-07-26T15:45:02.653 回答
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
于 2012-07-26T15:42:54.527 回答
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
于 2012-07-26T15:44:19.670 回答