> > What, no partitions? > > >http://en.wikipedia.org/wiki/Partition_of_a_set
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])) >>> partition('abcd') ['abcd'] ['a', 'bcd'] ['ab', 'cd'] ['abc', 'd'] ['a', 'b', 'cd'] ['a', 'bc', 'd'] ['ab', 'c', 'd'] ['a', 'b', 'c', 'd'] -- http://mail.python.org/mailman/listinfo/python-list