Нужно сделать из списка вида:
l = ['1','2','3','4','5','7','8','10','12','15','21','22','23','24']
s = '1-5,7,8,10,12,15,21-24'
def list_vyd_to_str(list_vyd): ''' Получение строки со списком выделов вида '1-3,5,7,10-12' ''' # Создаем список вида ['1-2-3-4-5','7-8','10-11-12,19,21'] list1 = [] for i in range(len(list_vyd)): if i == len(list_vyd) - 1: list1.append(str(list_vyd[i])) break elif (int(list_vyd[i+1]) - int(list_vyd[i]) == 1): list1.append(str(list_vyd[i]) + '-') else: list1.append(str(list_vyd[i]) + ',') string1 = ''.join(list1) list2 = string1.split(',') # Убираем лишние элементы из строк в списке # и приводим к строке вида '1-5,7-8,10-12' list3 = [] for i in list2: # Убираем '-' в строках вида '1-2' if ('-' in i and i.count('-') == 1): begin = i.find('-') end = i.rfind('-') string = i[:begin] + ',' + i[end+1:] list3.append(string) # Убираем '-' в строках вида '1-2-3-4' elif ('-' in i and i.count('-') > 1): begin = i.find('-') end = i.rfind('-') string = i[:begin] + '-' + i[end+1:] list3.append(string) # Добавляем строки из одной цифры else: list3.append(i) result_list = ','.join(list3) return result_list
