Dividir una lista en partes en función de un conjunto de índices en Python

¿Cuál es la mejor manera de dividir una lista en partes según un número arbitrario de índices? P.ej. dado el código de abajo

indexes = [5, 12, 17]
list = range(20)

devolver algo como esto

part1 = list[:5]
part2 = list[5:12]
part3 = list[12:17]
part4 = list[17:]

Si no hay índices debe devolver la lista completa.