基于差异的Python拆分列表

时间:2015-03-16 13:44:56

标签: python

我有一个像这样的列表

a = [10,20,20,24,25,80,90,100,100,101,102,103,140,141,142,143,120,110,100,90,50,40,0]

我需要迭代每个连续的元素并选择那些在差异范围内的元素(比如4)。

对于此示例,应创建段落

是继续添加元素,如果它们在忽略的范围内。

[20,24,25] [100,101,102,103] [140,141,142,143] [0,0]

1 个答案:

答案 0 :(得分:0)

大多数情况下,您似乎想要这样的东西:

def groupit(seq, thresh=4, minlen=3):
    itr = iter(seq)
    accum = [next(itr)]
    while True:
        newone = next(itr, None)
        if newone is None: break
        if abs(newone - accum[-1]] <= thresh:
            accum.append(newone)
        else:
            if len(accum) >= minlen: yield accum
            accum = [newone]
    if len(accum) >= minlen: yield accum

result = list(groupit(seq))

然而,在您想要的结果中,您会显示最后一组[0, 0],而且没有任何理由或解释 - 不知道这意味着什么。这段代码确实拥有最后一个,显然是完全任意的群体,只有真正的群体。