rbt wrote: > On Wed, 2005-07-13 at 11:09 -0400, rbt wrote: > >>On Wed, 2005-07-13 at 10:21 -0400, rbt 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? >> >>Expanding this to 4^4 (256) to test the random.sample function produces >>interesting results. It never finds more than 24 combinations out of the >>possible 256. This leads to the question... how 'random' is sample ;) >> >>Try it for yourselves: >> >>test = list('1234') >> >>combinations = [] >>while 1: >> combo = random.sample(test, 4) >> possibility = ''.join(combo) >> if possibility not in combinations: >> print possibility >> combinations.append(possibility) >> continue >> else: >> continue >> > > > Someone pointed out off-list that this is doing permutation, not > combination. Is there a way to make random.sample to do combinations? >
Probably not in any sensible way. But what you list in your original post are not distinct combinations. e.g. abaa and aaba are both 3 a's and 1 b. Maybe you mean that order does matter (and you're actually looking for all distinct permutations of all combinations)? Duncan -- http://mail.python.org/mailman/listinfo/python-list