Найти в Дзене

😎 ЯНДЕКССОБЕС: превращаем числа в читаемые диапазоны

😎 ЯНДЕКССОБЕС: превращаем числа в читаемые диапазоны! Дан список целых чисел без повторений. Нужно преобразовать его в строку, свернув последовательные по числовому ряду значения в диапазоны (a-b), а одиночные числа оставить как есть. Например, у вас есть список: [0, 1, 2, 4, 5, 7, 8] И хочется превратить его в: "0-2,4-5,7-8" Вместо десятков чисел — всего пара аккуратных диапазонов! Идеально для отображения строк, страниц, ID или логов. Вот сам код: def group_ranges(nums): if not nums: return "" result = [] start = end = nums[0] for num in nums[1:]: if num == end + 1: end = num else: result.append(f"{start}-{end}" if start != end else str(start)) start = end = num result.append(f"{start}-{end}" if start != end else str(start)) return ",".join(result) Пример: nums = [0, 1, 2, 4, 5, 7, 8] print(group_ranges(nums)) # Вывод: "0-2,4-5,7-8" Попробуй сам — скопируй код, поиграй с разными списками и посмотри, как он аккуратно всё группирует. 💪

😎 ЯНДЕКССОБЕС: превращаем числа в читаемые диапазоны!

Дан список целых чисел без повторений.

Нужно преобразовать его в строку, свернув последовательные по числовому ряду значения в диапазоны (a-b), а одиночные числа оставить как есть.

Например, у вас есть список:

[0, 1, 2, 4, 5, 7, 8]

И хочется превратить его в:

"0-2,4-5,7-8"

Вместо десятков чисел — всего пара аккуратных диапазонов!

Идеально для отображения строк, страниц, ID или логов.

Вот сам код:

def group_ranges(nums):

if not nums:

return ""

result = []

start = end = nums[0]

for num in nums[1:]:

if num == end + 1:

end = num

else:

result.append(f"{start}-{end}" if start != end else str(start))

start = end = num

result.append(f"{start}-{end}" if start != end else str(start))

return ",".join(result)

Пример:

nums = [0, 1, 2, 4, 5, 7, 8]

print(group_ranges(nums)) # Вывод: "0-2,4-5,7-8"

Попробуй сам — скопируй код, поиграй с разными списками и посмотри, как он аккуратно всё группирует. 💪