簡體   English   中英

如果內部循環內的條件為真,則幾個嵌套的'for'循環繼續下一次外循環迭代

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM