filtertips
filtertips

Reputation: 903

how to define dynamic nested loop python function

a = [1]
b = [2,3]
c = [4,5,6]

d = [a,b,c]


for x0 in d[0]:
    for x1 in d[1]:
        for x2 in d[2]:
            print(x0,x1,x2)

Result:

1 2 4
1 2 5
1 2 6
1 3 4
1 3 5
1 3 6

Perfect, now my question is how to define this to function, considering ofcourse there could be more lists with values. The idea is to get function, which would dynamicaly produce same result.

Is there a way to explain to python: "do 8 nested loops for example"?

Upvotes: 17

Views: 5310

Answers (1)

Alden
Alden

Reputation: 2269

You can use itertools to calculate the products for you and can use the * operator to convert your list into arguments for the itertools.product() function.

import itertools

a = [1]
b = [2,3]
c = [4,5,6]

args = [a,b,c]

for combination in itertools.product(*args):
    print combination

Output is

(1, 2, 4)
(1, 2, 5)
(1, 2, 6)
(1, 3, 4)
(1, 3, 5)
(1, 3, 6)

Upvotes: 23

Related Questions