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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

Details for the file break_out_nested-0.10.tar.gz.

File metadata

  • Download URL: break_out_nested-0.10.tar.gz
  • Upload date:
  • Size: 3.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for break_out_nested-0.10.tar.gz
Algorithm Hash digest
SHA256 5da8cd628c2325f20e84b57df8f1913312d05fd748c4b933e69bae4849e91bf1
MD5 77489c320b160a1cc5ab35913796ec41
BLAKE2b-256 fb689367b189244380d51c260033e94143bc0b9344cdb862c7c2fdb1ece6903d

See more details on using hashes here.

File details

Details for the file break_out_nested-0.10-py3-none-any.whl.

File metadata

File hashes

Hashes for break_out_nested-0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 f792522a23c37c465c7adf4228178e4c866f427c65fd26868bc4f891862af873
MD5 d11c145316280f1dce4e90e89d9fe0b4
BLAKE2b-256 d60464747c9ec50e53eedcdeef5426499de920ed5afcdb6986a862e1d1767fff

See more details on using hashes here.

Supported by

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