# Variable number of nested for loops in Python

I am having trouble getting this to work and any help would be greatly appreciated. I want to have a variable number of nested for loops for the following code. The idea is to write every combination possible to a csv file.

here is my code:
`

``````ka = [0.217, 0.445]
kb = [0.03, 0.05]
kc = [10]
kd = [0.15625, 0.7]
ke = [1.02, 0.78]
La = [0.15, 0.25]
Lb = [0.025, 0.075]
tc = [0.002, 0.007]
Ld = [0.025, 0.115]
Le = [0.07, 0.2]

NUMBER_OF_VARIABLES = 10

with open('test.csv', 'w') as file:
writer = csv.writer(file, lineterminator = '\n')
row = [0] * len(NUMBER_OF_VARIABLES)

for E in Le:
for D in Ld:
for C in tc:
for B in Lb:
for A in La:
for e in ke:
for d in kd:
for c in kc:
for b in kb:
for a in ka:
row[0] = a
row[1] = b
row[2] = c
row[3] = d
row[4] = e
row[5] = A
row[6] = B
row[7] = C
row[8] = D
row[9] = E
writer.writerow(row)
``````

`
the idea is I would like to be able to add more or remove variables. the k and L of each letter are related. For example to add another variable would include a Lf and kf. I would like to do it without manually adding more loops. The variable structure does not have to remain if it would be better to make it one list.

I feel like I need to write a recursive function but am having trouble figuring this out, any help would be greatly appreciated.

I have tried importing a csv file where each line has a variable but can not figure out the variable number of for loops.

### >Solution :

What you need is `itertools.product`. It will handle all of this for you.

``````import itertools
ka = [0.217, 0.445]
kb = [0.03, 0.05]
kc = [10]
kd = [0.15625, 0.7]
ke = [1.02, 0.78]
La = [0.15, 0.25]
Lb = [0.025, 0.075]
tc = [0.002, 0.007]
Ld = [0.025, 0.115]
Le = [0.07, 0.2]

for row in itertools.product(ka,kb,kc,kd,ke,La,Lb,tc,Ld,Le):
writer.writerow(row)
``````

You can probably even do that in a single line:

``````writer.writerows(itertools.product(ka,kb,kc,kd,ke,La,Lb,tc,Ld,Le))
``````