Iterando sobre particiones en Python

Me preguntaba cuál es la mejor manera (en Python) de iterar sobre las particiones de una lista de un tamaño determinado.

Digamos, por ejemplo, tenemos la lista[1,2,3,4,5] y queremosk=3 particiones Una mala manera de hacer esto sería escribir:

lst = [1,2,3,4,5]
for i in range(1,len(lst)):
    for j in range(i+1, len(lst)):
        print lst[:i], lst[i:j], lst[j:]

Esto da

[1], [2], [3,4,5]
[1], [2,3], [4,5]
...
[1,2,3], [4], [5]

Pero si luego quisiera repetirk=4 particiones, entonces tendría que agregar un nivel de anidación de bucle, que no se puede hacer en tiempo de ejecución. Idealmente, me gustaría escribir algo como:

for part in partitions([1,2,3,4,5], k):
    print part

¿Alguien sabe la mejor manera de hacer esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta