On Thu, 14 Jul 2005 17:10:37 -0400, William Park <[EMAIL PROTECTED]> wrote:

>rbt <[EMAIL PROTECTED]> 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
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to