Вы можете использовать more_itertools
import more_itertools
a=[1,2,3,4,5,8,9,10,12,13,14,15]
to_range = ["{}-{}".format(groups[0],groups[-1]) for groups in map(list,more_itertools.consecutive_groups(a))]
#['1-5', '8-10', '12-15']
Если диапазон должен содержать как минимум 2 элемента (т. Е. Для [1] 1-1 не допускается), вы можете добавить условия:
to_range = ["{}-{}".format(groups[0],groups[-1]) for groups in map(list,more_itertools.consecutive_groups(a)) if groups[0] != groups[-1]]