All pastes #342702 Raw Edit

gjc

public text v1 · immutable
·published 2007-02-06 14:10 UTC
rendered paste body
def permutations(param1, param2):    assert isiterable(param1)    assert isiterable(param2)    param_iters = [iter(param2) for x in param1]    params = [x.next() for x in param_iters]    while True:        yield zip(param1, params)        for pos in xrange(len(param1) - 1, -1, -1):            try:                params[pos] = param_iters[pos].next()            except StopIteration:                param_iters[pos] = iter(param2)                params[pos] = param_iters[pos].next()            else:                break        else:            break