我知道这是非常低效和丑陋的代码,但是如果我有三个for
循环,则嵌套在彼此之内,如:
for x in range(0, 10):
for y in range(x+1, 11):
for z in range(y+1, 11):
if ...
如果if
语句为true,我想打破两个内部循环并继续外循环的下一次迭代。可以这样做吗?
答案 0 :(得分:4)
在每个循环结束后检查一些变量:
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;
#...
答案 1 :(得分:2)
另一个选择是使用异常而不是状态变量:
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
我认为如果超过两个内循环,这可能会特别有用。
答案 2 :(得分:0)
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)
答案 3 :(得分:0)
一种可能的解决方案是将两个内部循环合并为一个(可以用break
终止):
import itertools
for x in range(10):
for y, z in itertools.combinations(range(x+1, 11), 2):
if condition:
break