Divida uma lista em partes com base em um conjunto de índices em Python

Qual é a melhor maneira de dividir uma lista em partes com base em um número arbitrário de índices? Por exemplo. dado o código abaixo

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

retornar algo assim

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

Se não houver índices, deve retornar a lista inteira.

questionAnswers(9)

yourAnswerToTheQuestion