我试图遍历一组点,如果满足某些条件,则在当前点和下一个点之间添加另一个点。然后我想再次开始循环,遍历旧点和新点。 例如:
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
关于Python:更改 'for' 循环的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18193808/