簡體   English   中英

Python:更改“ for”循環的條件

[英]Python: Changing the conditions of a 'for' loop

我試圖遍歷一組點,如果滿足某些條件,請在當前點和下一個點之間添加另一個點。 然后,我想再次開始循環,遍歷新舊點。 例如:

  • for i in range(3)

    • 如果i不滿足特定條件,請在i之后添加一個新點,這將范圍更改為range(4) 結束循環,並使用for i in range(4)重新開始。
    • 如果我確實滿足條件,則繼續在range(3) 如果i到達終點而不必添加新點,則退出循環並繼續其余代碼。

我嘗試了多種方法,但是我什么都做不了。 我的理解是,它遵循以下原則:

b = 3
for i in range(b):
    if (i meets conditions):
        pass
    else:
        b = b+1
        "retry entire loop with new b"

我也嘗試過使用while循環,但是如果添加新的點,我看不到如何在第一點重新開始。

我可能缺少一些簡單的東西,但是我看不到解決方案。

謝謝您的幫助!

您需要為此使用遞歸函數:

def func(l):
   for i, el in enumerate(l):
       if (el match the conditions):
            l.insert(i+1, something)
            return func(l)
   return l


l = [1, 2, 3]
result = func(l)

或使用while循環:

l = [1, 2, 3]
while True:
    i = 0
    if i >= len(l):
        break
    if (l[i] match the condition):
        l.insert(i+1, something)
        i = 0
    else:
        i += 1
b = 3
found = False
while True:
    for i in range(b):
        if (i meets conditions):
            found = True
            break # Done - breaks out
    if found:
        break
    else:
        b += 1

使用while循環...

has_change = True
b = 3
while has_change:
    new_b = b
    for i in range(b):   
        if (i meets conditions):
            pass
        else:
            new_b = b+1
            break
    changed = new_b != b

使用while循環觸發新的for循環

b = 3

criteria_met = False
while (criteria_met == False):
    for i in range(b):
        if (i == 1):
            b = b+1
            criteria_met = True
            break
print b

作為此處的附帶說明,在使用像這樣的循環時要小心無限循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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