[英]Several nested 'for' loops, continue to next iteration of outer loop if condition inside inner loop is true
我知道这是非常低效和丑陋的代码,但如果我有三个for
循环,嵌套在彼此内部,如:
for x in range(0, 10):
for y in range(x+1, 11):
for z in range(y+1, 11):
if ...
如果if
语句为true,我想打破两个内部循环并继续外循环的下一次迭代。 可以这样做吗?
每个循环结束后检查一些变量:
for x in range(0, 10):
for y in range(x+1, 11):
for z in range(y+1, 11):
if condition:
variable = True
break
#...
if variable:
break;
#...
另一种选择是使用异常而不是状态变量:
class BreakException(Exception):
pass
for x in range(0, 10):
try:
for y in range(x+1, 11):
for z in range(y+1, 11):
if True:
raise BreakException
except BreakException:
pass
我想如果从两个以上的内环中拯救出来,这可能会特别有用。
n = False
for x in range(0,10):
if n == True:
print(x,y,z)
for y in range(x+1, 11):
if n == True:
break
for z in range(y+1, 11):
if z == 5:
n = True
break
(1, 2, 5)
(2, 2, 5)
(3, 3, 5)
(4, 4, 5)
(5, 5, 5)
(6, 6, 5)
(7, 7, 5)
(8, 8, 5)
(9, 9, 5)
一种可能的解决方案是将两个内部循环合并为一个(可以使用break
终止):
import itertools
for x in range(10):
for y, z in itertools.combinations(range(x+1, 11), 2):
if condition:
break
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.