Generating all combinations
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-
> 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!"
> > 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
> 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!
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):
More information about the Python-list