如果列表中的连续数在X的范围内,如何获取该序列


data = [1, 2, 5, 6, 7, 9, 22, 24, 26, 29] 
x=2

应返回:

[[1, 2], [5, 6, 7, 9], [22, 24, 26], [29]]

我的代码,

from operator import itemgetter  
from itertools import groupby 
for k, g in groupby(enumerate(data), lambda x:x[1]-x[0]):
res.append(list(map(itemgetter(1), g)))

该代码返回1的的连续序列

`([[1, 2], [5, 6, 7], [9], [22], [24], [26], [29]] )`  

如何修改此代码以获得上述输出或任何其他方法
非常感谢您的帮助。

为此使用numpy:

from numpy import diff, where, split
result= split(data, where(diff(data)>x)[0]+1 )
print(list(map(list, result)))

输出:

[[1, 2], [5, 6, 7, 9], [22, 24, 26], [29]]

最新更新