Преобразовать список целых чисел в определенный строковый форматPython

Программы на Python
Ответить
Anonymous
 Преобразовать список целых чисел в определенный строковый формат

Сообщение Anonymous »

Я имею дело со списком целых чисел, обозначающих страницы, на которых было найдено ключевое слово. Я хотел бы создать блок кода, который преобразует этот список в строку определенного формата, соответствующую некоторым простым правилам. Одиночные целые числа преобразуются в строку. Последовательные целые числа рассматриваются как интервалы (левая граница, дефис, правая граница), а затем преобразуются в строку. Каждое преобразование разделяется запятой. Это пример ввода и ожидаемого результата:

Код: Выделить всё

input = [4, 5, 6, 7, 8, 9, 10, 22, 23, 26, 62, 63, 113, 137, 138, 139]
expected_output = "4-10, 22, 23, 26, 62, 63, 113, 137-139"
Я написал этот код:

Код: Выделить всё

res = [4, 5, 6, 7, 8, 9, 10, 22, 23, 26, 62, 63, 113, 137, 138, 139]

if len(res)>0:
resStr = str(res[0])
isConsecutive = False
for index in range(1, len(res)):
diff = res[index] - res[index-1]
if diff == 1:
isConsecutive = True
if index == len(res)-1:
resStr = resStr + "-" + str(res[index])
continue
else:
if isConsecutive:
isConsecutive = False
resStr = resStr + "-" + str(res[index-1]) + ", " + str(res[index])
else:
resStr = resStr + ", " + str(res[index])

print(res)
print(resStr)
Этот код дает мне результат:

Код: Выделить всё

4-10, 22-23, 26, 62-63, 113, 137-139
Он не распознает, что только два последовательных числа не считаются интервалом: «22, 23», а не «22-23», а также «62, 63» а не "62-63".
Как можно решить этот вопрос? Есть ли более простой и эффективный способ выполнить преобразование?

Подробнее здесь: https://stackoverflow.com/questions/792 ... ing-format
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»