微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

按连续序列对整数进行分组的列表

如何解决按连续序列对整数进行分组的列表

假设列表始终按升序排列:

from itertools import groupby, count

numberlist = [1,2,3,4,5,8,9,10,11,200,201,202]

def as_range(g):
    l = list(g)
    return l[0], l[-1]

print [as_range(g) for _, g in groupby(numberlist, key=lambda n, c=count(): n-next(c))]

解决方法

我有一个整数列表…

[1,2,3,4,5,8,9,10,11,200,201,202]

我想将它们分组到一个列表列表中,其中每个子列表都包含未破坏序列的整数。像这样…

[[1,5],[8,11],[200,202]]

我周围工作比较笨拙…

lSequenceOfNum = [1,202]

lGrouped = []
start = 0
for x in range(0,len(lSequenceOfNum)):
    if x != len(lSequenceOfNum)-1:
        if(lSequenceOfNum[x+1] - lSequenceOfNum[x]) > 1:
            lGrouped.append([lSequenceOfNum[start],lSequenceOfNum[x]])
            start = x+1

    else:
        lGrouped.append([lSequenceOfNum[start],lSequenceOfNum[x]])
print lGrouped

这是我能做的最好的。有没有更“ pythonic”的方式来做到这一点?谢谢..

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。