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