Question about permutations (itertools)

Peter Otten __peter__ at web.de
Mon May 31 10:25:26 EDT 2010


Vincent Davis wrote:

> As a note I am doing this in py3.
> 
> 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.

>>> for t in itertools.product([0, 1], repeat=3):
...     print(t)
...
(0, 0, 0)
(0, 0, 1)
(0, 1, 0) # Seems you missed one
(0, 1, 1)
(1, 0, 0)
(1, 0, 1)
(1, 1, 0)
(1, 1, 1)

> I see ways to get a bigger list and then remove
> duplicates.
> 
>>>> list(permutations([0,1], 3))
> []
> 
>>>> list(combinations_with_replacement('01',3))
> ('0', '0', '0')
> ('0', '0', '1')
> ('0', '1', '1')
> ('1', '1', '1')
> 
> Is it possible to get combinations_with_replacement to return numbers
> rather than strings? (see above)

>>> for t in itertools.combinations_with_replacement([0, 1], 3):
...     print(t)
...
(0, 0, 0)
(0, 0, 1)
(0, 1, 1)
(1, 1, 1)

Peter



More information about the Python-list mailing list