all possible combinations

Bengt Richter bokr at oz.net
Thu Jul 14 19:01:28 EDT 2005


On Thu, 14 Jul 2005 17:10:37 -0400, William Park <opengeometry at yahoo.ca> wrote:

>rbt <rbt at athop1.ath.vt.edu> wrote:
>> Say I have a list that has 3 letters in it:
>> 
>> ['a', 'b', 'c']
>> 
>> I want to print all the possible 4 digit combinations of those 3
>> letters:
>> 
>> 4^3 = 64
>> 
>> aaaa
>> abaa
>> aaba
>> aaab
>> acaa
>> aaca
>> aaac
>> ...
>> 
>> What is the most efficient way to do this? 
>
>Since you're doing cross product (ie. 3*3*3*3), manual loop of 4 level
>deep would be the fastest in terms of algorithm.  C vs. Python is
>implementation detail.
>
>In Bash shell, this is one-liner,
>    echo {a,b,c}{a,b,c}{a,b,c}{a,b,c}
>or maybe two,
>    abc=(a b c)
>    echo {^abc}{^abc}{^abc}{^abc}
>
It's a one liner in Python too ;-)

 >>> print ' '.join([x+y+z+q for s in ['abc'] for x in s for y in s for z in s for q in s])
 aaaa aaab aaac aaba aabb aabc aaca aacb aacc abaa abab abac abba abbb abbc abca abcb abcc acaa a
 cab acac acba acbb acbc acca accb accc baaa baab baac baba babb babc baca bacb bacc bbaa bbab bb
 ac bbba bbbb bbbc bbca bbcb bbcc bcaa bcab bcac bcba bcbb bcbc bcca bccb bccc caaa caab caac cab
 a cabb cabc caca cacb cacc cbaa cbab cbac cbba cbbb cbbc cbca cbcb cbcc ccaa ccab ccac ccba ccbb
  ccbc ccca cccb cccc

Regards,
Bengt Richter



More information about the Python-list mailing list