For example: if my values are ['a', 'b', 'c'], then all possible lists
of length 2 would be: aa, ab, ac, ba, bb, bc, ca, cb, cc.

I created a recursive program to do it, but I was wondering if there
was a better way of doing it (possibly with list comprehensions).

Here's my recursive version:

vals = ['a', 'b', 'c']

def foo(length):
    if length <=0:
        return []
    if length == 1:
        return [[x] for x in vals]
    else:
        return [x + [y] for x in foo(length - 1) for y in vals]

Sounds like you want one of the combinitoric generators found in itertools[1] -- in this case, the itertools.product() does what you describe. According to the docs, it was added in 2.6 so if you're running an older version, you'd have to back-port it.

-tkc

[1]
http://docs.python.org/library/itertools.html#itertools.product




--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to