Gal Diskin wrote: > 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 > I was wondering if one could write this more easily in some manner > using only 1 for loop. def nested_loops(*args): assert args if len(args) == 1: for item in args[0]: yield (item,) else: gap = len(args) // 2 for left in nested_loops(*args[:gap]): for right in nested_loops(*args[gap:]): yield left + right if __name__ == "__main__": for i, k in nested_loops("abc", "12"): print i, k for i, j, k in nested_loops("ab", "123", "xyz"): print i, j, k Be prepared for a significant performance hit. Peter PS: Did anybody say macro? No? I must be hallucinating... -- http://mail.python.org/mailman/listinfo/python-list