Gal Diskin schrieb: > Hi, > I am writing a code that needs to iterate over 3 lists at the same > time, i.e something like this: > > for x1 in l1: > for x2 in l2: > for x3 in l3: > print "do something with", x1, x2, x3 > > What I need to do is go over all n-tuples where the first argument is > from the first list, the second from the second list, and so on...
Heard about recursion? def collect(L,*lists): if not lists: return [(x,) for x in L] collection = [] for x in L: for y in collect(lists[0],*lists[1:]): collection.append((x,)+y) return collection for item in collect( l1, l2, l3): func(*item) Here is the same in generator form def collect(L,*lists): if not lists: for x in L: yield (x,) else: for x in L: for y in collect(lists[0],*lists[1:]): yield (x,)+y ( o.k - it required two nested for-loops in each implementation :) -- http://mail.python.org/mailman/listinfo/python-list