def partlst(lst, n):
    """Partition @lst in @n balanced parts, in given order"""
parts, rest = divmod(len(lst), n)
lstiter = iter(lst)
for j in range(n):
    plen = len(lst) / n + (1 if rest > 0 else 0)
rest -= 1
yield list(itertools.islice(lstiter, plen))
parts = list(partlst(list(range(1, 15)), 5))
print(len(parts))
print(parts)
Разделение списка на части сбалансированной длины