Reputation: 2201
I have a list of lists over which I need to iterate 3 times (3 nested loops)
rangeList = [[-0.18,0.18],[0.14,0.52],[0.48,0.85]]
I can achieve this using product of product as follows
from itertools import product
for val in product(product(rangeList,rangeList),rangeList):
print val
The output looks as follows
(([-0.18, 0.18], [-0.18, 0.18]), [-0.18, 0.18])
(([-0.18, 0.18], [-0.18, 0.18]), [0.14, 0.52])
(([-0.18, 0.18], [-0.18, 0.18]), [0.48, 0.85])
(([-0.18, 0.18], [0.14, 0.52]), [-0.18, 0.18])
Its a tuple of tuple. My questions are
val
into 3 separate variables say xRange
, yRange
and
zRange
, where each holds a list value of say [-0.18, 0.18]
or [0.14, 0.52]
etc.Upvotes: 5
Views: 986
Reputation: 64318
This is probably the most elegant way to do what you want:
for xrange, yrange, zrange in product(rangeList, repeat=3):
print xrange, yrange, zrange
But just to demonstrate how you can do the "deep" tuple unpacking you were trying:
for (xrange, yrange), zrange in product(product(rangeList,rangeList),rangeList):
print xrange, yrange, zrange
Upvotes: 10