for word1 in buf1:
find = False
for word2 in buf2:
...
if res == res1:
print "BINGO " + word1 + ":" + word2
find = True
break # <-- break here too
if find:
break
另一种方法是使用生成器表达式将for压缩到单个循环中
for word1, word2 in ((w1, w2) for w1 in buf1 for w2 in buf2):
...
if res == res1:
print "BINGO " + word1 + ":" + word2
break
您也可以考虑使用itertools.product
from itertools import product
for word1, word2 in product(buf1, buf2):
...
if res == res1:
print "BINGO " + word1 + ":" + word2
break
class Found(Exception): pass
try:
for i in range(100):
for j in range(1000):
for k in range(10000):
if i + j + k == 777:
raise Found
except Found:
print i, j, k
大多数情况下,您可以使用许多方法来创建一个单循环,该循环的功能与双循环相同。
在您的示例中,可以使用itertools.product将代码片段替换为
其他itertools函数也适用于其他模式。
可能不是你所希望的,但通常在将
find
设置为True
之后,你会希望有一个break
另一种方法是使用生成器表达式将
for
压缩到单个循环中您也可以考虑使用
itertools.product
Python中中断嵌套循环的推荐方法是。。。例外情况
相关问题 更多 >
编程相关推荐