list of all possible values

Tim Chase python.list at
Mon Jul 13 18:33:20 CEST 2009

> 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.



More information about the Python-list mailing list