Search code examples
pythonloopsfor-loopinfinite-loop

Back and forth loop Python


I want to create an infinite loop that counts up and down from 0 to 100 to 0 (and so on) and only stops when some convergence criterion inside the loop is met, so basically something like this:

for i in range(0, infinity):
    for j in range(0, 100, 1):
        print(j) # (in my case 100 lines of code)
    for j in range(100, 0, -1):
        print(j) # (same 100 lines of code as above)

Is there any way to merge the two for loops over j into one so that I don't have write out the same code inside the loops twice?


Solution

  • Use the chain method of itertools

    import itertools
    for i in range(0, infinity):
        for j in itertools.chain(range(0, 100, 1), range(100, 0, -1)):
            print(j) # (in my case 100 lines of code)
    

    As suggested by @Chepner, you can use itertools.cycle() for the infinite loop:

    from itertools import cycle, chain
    
    for i in cycle(chain(range(0, 100, 1), range(100, 0, -1))):
        ....