如何从列表中收集范围?

时间:2018-06-28 21:21:20

标签: python python-3.x list range

所以我很难想到一种从一个列表中获取不同范围的方法。 代码如下:

data = [101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 112, 115, 116, 117, 118, 119, 121]
f_range = []

print()的输出应类似于:

101-106, 108-112, 115-119, 121

我需要将这些按连续的升序分组。

1 个答案:

答案 0 :(得分:1)

尝试一下:

min = sorted(data)[0]
max = 0
step = 1  # Increment between each consecutive number
for c, item in enumerate(sorted(data)):
    try:
        if item + step != sorted(data)[c + 1]:
            max = item
            print (str(min) + "-" + str(max))
            min = sorted(data)[c + 1]
    except IndexError:
        max = item
        print (str(min) + "-" + str(max))
        break

希望这会有所帮助。