python: restarting a loop

后端 未结 5 744
日久生厌
日久生厌 2020-11-30 08:50

i have:

for i in range(2,n):
    if(something):
       do something
    else:
       do something else
       i = 2 **restart the loop

But

5条回答
  •  一个人的身影
    2020-11-30 09:17

    Here is an example using a generator's send() method:

    def restartable(seq):
        while True:
            for item in seq:
                restart = yield item
                if restart:
                    break
            else:
                raise StopIteration
    

    Example Usage:

    x = [1, 2, 3, 4, 5]
    total = 0
    r = restartable(x)
    for item in r:
        if item == 5 and total < 100:
            total += r.send(True) 
        else:
            total += item
    

提交回复
热议问题