Вы можете использовать тип slice
, чтобы преобразовать ваш индексный список в фрагменты списка.Как уже писали другие, используйте zip
для создания пар начала и конца:
>>> print(list(zip(indx, indx[1:]+[None])))
[(0, 5), (5, 7), (7, None)]
Мы используем эти пары для определения срезов:
>>> slices = [slice(a, b) for a, b in zip(indx, indx[1:]+[None])]
Затем используем объект среза простокак и целочисленный индекс, но срез будет выбирать подстроку списка, как определено в паре начало-окончание среза:
>>> for slc in slices:
... print(a[slc])
Дает:
['a', 'b', 3, 4, 'd']
[6, 7]
[8]