在Python中将整数列表转换为范围

阿基尔:

python中是否存在可以将不断增加的整数列表转换为范围列表的内容

例如,给定集合{0,1,2,3,4,7,8,9,11},我想得到{{0,4},{7,9},{11,11}}。

我可以编写一个程序来执行此操作,但想知道python中是否有内置函数

user97370:

使用itertools.groupby()产生一个简洁但棘手的实现:

import itertools

def ranges(i):
    for a, b in itertools.groupby(enumerate(i), lambda pair: pair[1] - pair[0]):
        b = list(b)
        yield b[0][1], b[-1][1]

print(list(ranges([0, 1, 2, 3, 4, 7, 8, 9, 11])))

输出:

[(0, 4), (7, 9), (11, 11)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章