list of all possible values

Emile van Sebille emile at fenx.com
Mon Jul 13 13:58:25 EDT 2009


On 7/13/2009 9:33 AM Tim Chase said...
>> 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

Or on systems with list comps try:

 >>> V='abc'
 >>> ['%s%s'%(ii,jj) for ii in V for jj in V]
['aa', 'ab', 'ac', 'ba', 'bb', 'bc', 'ca', 'cb', 'cc']
 >>>

Emile




More information about the Python-list mailing list