Generating all combinations

Steven D'Aprano steven at
Wed Jun 3 23:48:11 EDT 2009

On Wed, 03 Jun 2009 20:27:56 -0700, Raymond Hettinger wrote:

>> > What, no partitions?
>> >
> Simpler version:
> def partition(s):
>     n = len(s)
>     parts = range(1, n)
>     for i in range(n):
>         for div in combinations(parts, i):
>             print map(s.__getslice__, chain([0], div), chain(div,
> [n]))

Nice one!

Raymond, as perhaps *the* principle contributor to itertools, do you feel 
that the combinatorics-related tools should be in their own module? Or is 
that dividing the module too fine?

Would you consider moving permutations() and friends into a module 
together with functions for calculating the number of permutations etc? 

e.g. permutations(iterable[, r]) --> permutations object
     nPr(n, r) --> int

and similar.


More information about the Python-list mailing list