Generating all combinations

Mensanator mensanator at aol.com
Tue Jun 2 01:45:27 EDT 2009


On Jun 1, 8:28 pm, Steven D'Aprano <st... at REMOVE-THIS-
cybersource.com.au> wrote:
> On Mon, 01 Jun 2009 17:24:49 -0700, Mensanator wrote:
> > On Jun 1, 6:40 pm, Steven D'Aprano <st... at REMOVE-THIS-
> > cybersource.com.au> wrote:
> >> On Mon, 01 Jun 2009 11:23:35 -0700, Mensanator wrote:
> >> > I believe the name you're looking for is
> >> > combinations_with_replacement. It is one of the features being added
> >> > to 3.1 which should give all the subsets of the Cartesian Product:
>
> >> > permutations_with_replacement:    product()
> >> > combinations_with_replacement:    combinations_with_replacement()
> >> > permutations_without_replacement: permutations()
> >> > combinations_without_replacement: combinations()
>
> >> What, no partitions?
>
> > Itertools does partitions?
>
> Er, no. That's why I asked "What, no partitions?" instead of saying
> "Look, itertools also does partitions!"
>
> >>http://en.wikipedia.org/wiki/Partition_of_a_set
>
> > I didn't see any reference to Cartesian Product there.
>
> Wikipedia is the encyclopedia anyone can edit. Go right ahead and put it
> in if you think it needs to be there. While you're at it, there is no
> mention of Cartesian Product in any of
>
> http://en.wikipedia.org/wiki/Permutationshttp://en.wikipedia.org/wiki/Combinations
>
> http://mathworld.wolfram.com/Permutation.htmlhttp://mathworld.wolfram.com/k-Subset.html
>
> either. Are you sure that permutations and combinations are subsets of
> the Cartesian Product?

Didn't notice this before - it says so in the docs!

itertools.product(*iterables[, repeat])¶
Cartesian product of input iterables.

The code for permutations() can be also expressed as a subsequence of
product(), filtered to exclude entries with repeated elements (those
from the same position in the input pool):

The code for combinations() can be also expressed as a subsequence of
permutations() after filtering entries where the elements are not in
sorted order (according to their position in the input pool):



>
> --
> Steven




More information about the Python-list mailing list