[英]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.