Enumerating k-segmentations of a sequence

bearophileHUGS at lycos.com bearophileHUGS at lycos.com
Tue Nov 25 12:53:35 EST 2008


My version:

from itertools import combinations as xcombinations
from itertools import izip, islice

def xpairwise(iterable):
    # docs and doctests removed
    return izip(iterable, islice(iterable, 1, None))

def segmentations(seq, k):
    for comb in xcombinations(range(1, len(seq)), k-1):
        yield [seq[start:stop] for start,stop in xpairwise((None,) +
comb + (None,))]

for seg in segmentations(range(1, 6), 3):
    print seg
print

for seg in segmentations(range(1, 7), 2):
    print seg
print

for seg in segmentations(range(1, 7), 3):
    print seg
print

for seg in segmentations(range(1, 7), 4):
    print seg
print

Other people have already explained how this works.

Bye,
bearophile



More information about the Python-list mailing list