Vincent Davis wrote: > I am looking for the most efficient (speed) way to produce an an > iterator to of permutations. > One of the problem I am having it that neither combinations nor > permutations does not exactly what I want directly. > For example If I want all possible ordered lists of 0,1 of length 3 > (0,0,0) > (0,0,1) > (0,1,1) > (1,1,1) > (1,0,1) > (1,1,0) > (1,0,0) > I don't see a way to get this directly from the itertools. But maybe I > am missing something. I see ways to get a bigger list and then remove > duplicates.
You have three digits where each digit can have two values (binary digits, a.k.a. bits), so the number of combinations is 2*2*2 = 8. Even if the possible values where unevenly distributed, you could calculate the number of combinations by multiplying. Then, there are two different approaches: 1. count with an integer and then dissect into digits # Note: Using // for integer division in Python3! digit0 = n % base0 digit1 = (n // base0) % base1 digit2 = (n // base0 // base1) % base2 2. simulate digits and detect overflow Here you simply count up the "ones" and if they overflow, you reset them to zero and count up the "tens". What I don't really understand is what you mean with "ordered lists". Uli -- Sator Laser GmbH Geschäftsführer: Thorsten Föcking, Amtsgericht Hamburg HR B62 932 -- http://mail.python.org/mailman/listinfo/python-list