Python:更改';对于';环
我试图循环通过一组点,如果满足某些条件,在当前点和下一个点之间添加另一个点。然后我想再次开始循环,运行新旧点。 例如:Python:更改';对于';环,python,for-loop,while-loop,Python,For Loop,While Loop,我试图循环通过一组点,如果满足某些条件,在当前点和下一个点之间添加另一个点。然后我想再次开始循环,运行新旧点。 例如: 适用于范围(3)内的i 如果i不满足某一组条件,请在i之后添加一个新点。这将把范围更改为范围(4)。结束循环,用范围(4)中的i重新启动 如果我确实满足条件,请在范围(3)中继续。如果i到达末尾而不必添加新的点,则退出循环并继续代码的其余部分 我试过各种各样的方法,但都没用。我的理解是,它大致如下: b = 3 for i in range(b): if (
适用于范围(3)内的i
- 如果
不满足某一组条件,请在i
之后添加一个新点。这将把范围更改为i
。结束循环,用范围(4)中的i重新启动范围(4)
- 如果
- 如果我确实满足条件,请在
中继续。如果范围(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
使用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
作为这里的旁注,在使用这样的循环时,要小心无限循环。我认为在这种情况下,使用
while
循环会更好。你想从循环的开始重新开始,还是从刚刚添加的点开始?@kindall,我想从循环的开始开始谢谢你的回答。现在只是尝试一下;我认为while True
语句是无限期地运行while
循环的一种方式,直到您告诉它中断为止,这对吗?
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