Skip to main content

Break out of nested loops with max. 4 lines of code, no matter how deeply they are nested

Project description

Break out of nested loops with max. 4 lines of code, no matter how deeply they are nested

The problem: breaking out of nested loops

pip install break-out-nested

# Break out of nested loops - a pain in the ***

# How it is usually done:

done = False

for i in range(1, 6, 1):  # 1st loop

    print('i:', i)

    for j in range(1, 11, 2):  # 2nd loop

        print('   i, j:', i, j)

        for k in range(1, 21, 4):  # 3rd loop

            print('      i,j,k:', i, j, k)

            if i % 3 == 0 and j % 3 == 0 and k % 3 == 0:

                done = True

                break  # breaking from 3rd loop

        if done: break  # breaking from 2nd loop

    if done: break  # breaking from 1st loop

The solution

# Way easier

from break_out_nested import it, bol



# you need to create new variables as attributes of it,

# because break_out_nested has only access to these variables

it.i, it.j, it.k = 1, 1, 1





# the break condition

def cond(): return it.i % 3 == 0 and it.j % 3 == 0 and it.k % 3 == 0





# The condition will be checked in each loop

# The function that checks the condition has to be passed as the last argument. 

# You can pass as many iterables as you want to the function

for it.i, it.j, it.k in bol(range(1, 6, 1), range(1, 11, 2), range(1, 21, 4), cond):

    print(it.i, it.j, it.k)

More examples

# More examples

def cond(): return it.i + it.j + it.k == 777





it.i, it.j, it.k = 0, 0, 0

for it.i, it.j, it.k in bol(range(100), range(1000), range(10000), cond):

    print(it.i, it.j, it.k)





def cond(): return it.i + it.j + it.k >= 100000





it.i, it.j, it.k = 0, 0, 0

# you don't have to use it.i, it.j, it.k as the loop variables, you can

# use anything you want, but you have to update the variables somewhere

for i, j, k in bol(range(100), range(1000), range(10000), cond):

    it.i, it.j, it.k = i * 10, j * 100, k * 100

    print(it.i, it.j, it.k)

Project details


Release history Release notifications | RSS feed

This version

0.10

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

break_out_nested-0.10.tar.gz (3.7 kB view hashes)

Uploaded Source

Built Distribution

break_out_nested-0.10-py3-none-any.whl (5.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page