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