def group_consecutive(nums):
    if not nums:
        return []

    nums.sort()
    result = []
    start = end = nums[0]

    for num in nums[1:]:
        if num == end + 1:
            end = num
        else:
            if start == end:
                result.append(str(start))
            else:
                result.append(f"{start}-{end}")
            start = end = num

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

    return result


nums = [1, 2, 3, 5, 6, 8]
ret = group_consecutive(nums)
print(ret)  # ['1-3', '5-6', '8']

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: