Dividindo uma lista em N partes de comprimento aproximadamente igual

Qual é a melhor maneira de dividir uma lista emaproximadamente partes iguais? Por exemplo, se a lista possui 7 elementos e é dividida em 2 partes, queremos obter 3 elementos em uma parte e a outra deve ter 4 elementos.

Estou procurando algo comoeven_split(L, n) que quebraL para dentron peças.

def chunks(L, n):
    """ Yield successive n-sized chunks from L.
    """
    for i in xrange(0, len(L), n):
        yield L[i:i+n]

O código acima fornece pedaços de 3, em vez de 3. Eu poderia simplesmente transpor (iterar sobre isso e pegar o primeiro elemento de cada coluna, chamar essa parte um, depois pegar o segundo e colocá-lo na parte dois, etc.), mas isso destrói a ordem dos itens.

questionAnswers(22)

yourAnswerToTheQuestion