2

ポイントのセットをループしようとしていますが、特定の条件が満たされている場合は、現在のポイントと次のポイントの間に別のポイントを追加します。次に、古いポイントと新しいポイントの両方を実行して、ループを再度開始します。例えば:

  • 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 ループも使用してみましたが、新しいポイントが追加された場合に、最初のポイントでこれを再開する方法がわかりません。

簡単なものが欠けているかもしれませんが、これに対する解決策がわかりません。

助けてくれてありがとう!

4

4 に答える 4

4

これには再帰関数を使用する必要があります。

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
于 2013-08-12T18:21:52.460 に答える
1

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

ここで補足として、このようなループを使用する場合は無限ループに注意してください。

于 2013-08-12T18:39:31.700 に答える