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