import itertools as itools

def segment(it, n=1):
    try:
        len_it = len(it)
        it_true = it
    except TypeError:
        it_true = tuple(it)
        len_it = len(it_true)
    
    size, rest = divmod(len_it, n)
    sizes = [size] * n
    
    for i in range(rest):
        sizes[-i] += 1
    
    all_sizes = frozenset(itools.permutations(sizes))
    
    res = []
    
    for sizes in all_sizes:
        elem = []
        
        i = 0
        
        for size in sizes:
            elem.append(it[i:i+size])
            i += size
        
        res.append(elem)
    
    return res
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/7O64PBAIPITLTO32ZCIGPL2STKEGNQW4/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to