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

Reply via email to