我有一个程序,在另一个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
但这似乎没有做任何事情,有关如何实现这一目标的任何提示?
答案 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