У меня проблема в python.
У меня есть отсортированный список чисел, например [1,2,3,4,5]. Мне нужно получить строку, определяющую диапазон, например "1-5", если отсортированные числа будут последовательно или непрерывными.
Благодаря Girish
Учитывая l = [1,2,3,4,5]
, вы можете проверить следующее условие, состоит ли из последовательного списка целых чисел перед форматированием вывода с первым и последним элементами в списке:
if l == list(range(l[0], l[-1] + 1)):
print('{}-{}'.format(l[0], l[-1]))
Вы можете использовать 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]]
first = my_list[0]
last = my_list[-1]
text = f'{first}-{last}'
my_list = [1,2,3,5,8]
print """{0}-{1}""".format(my_list[0], my_list[-1])