converting a list of integers into range in python

后端 未结 11 1381
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-11-28 07:35

Is there something existing in python that can convert an increasing list of integers into a range list

E.g. given the set {0, 1, 2, 3, 4, 7, 8, 9, 11} I want to get

11条回答
  •  清酒与你
    2020-11-28 08:12

    I think the other answers are hard to understand, and probably inefficient. Hope this is easier and faster.

    def ranges(ints):
        ints = sorted(set(ints))
        range_start = previous_number = ints[0]
        for number in ints[1:]:
            if number == previous_number + 1:
                previous_number = number
            else:
                yield range_start, previous_number
                range_start = previous_number = number
        yield range_start, previous_number
    

提交回复
热议问题