Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Nested for loops in Python

Tags:

python

loops

I want to do something like

for a in [0..1]:
    for b in [0..1]:
        for c in [0..1]:
            do something

But, I might have 15 different variables. Is there a simpler way like

for a, b, c in [0..1]:
    do something

Thanks for any help

like image 766
GeoffDS Avatar asked Aug 23 '11 16:08

GeoffDS


3 Answers

itertools.product:

import itertools
for a,b,c in itertools.product([0, 1], repeat=3):
  # do something
like image 149
phihag Avatar answered Oct 17 '22 10:10

phihag


You can iterate over the product of all of them. Use itertools.product and pass in your ranges.

import itertools
for i in itertools.product(range(2), range(3), range(2)):
print (i)

yields

(0, 0, 0)
(0, 0, 1)
(0, 1, 0)
(0, 1, 1)
(0, 2, 0)
(0, 2, 1)
(1, 0, 0)
(1, 0, 1)
(1, 1, 0)
(1, 1, 1) 
(1, 2, 0)
(1, 2, 1)
like image 23
Anteru Avatar answered Oct 17 '22 10:10

Anteru


It sounds like you have a matrix/list of variables you need to process. Thus, the best (and speediest) solution is to use a matrix/list tool.

Such as: The Python itertools package.

As other have hinted, itertools.product is probably what you want. But, see the full list at: http://docs.python.org/library/itertools.html

Good luck.

like image 36
nonot1 Avatar answered Oct 17 '22 10:10

nonot1