我有一个像这样的列表
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]
答案 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]
,而且没有任何理由或解释 - 不知道这意味着什么。这段代码确实不拥有最后一个,显然是完全任意的群体,只有真正的群体。