我的清单如下:
tst = [1,3,4,6,8,22,24,25,26,67,68,70,72]
我想根据列表中连续元素之间的差异(相差1或2),将上面列表中的元素分组到单独的组/列表中。你知道吗
如果连续元素之间的差异大于4,则这些元素应形成一个单独的列表。你知道吗
以上输入的预期输出是:
[[1, 3, 4, 6, 8], [22, 24, 25, 26], [67, 68, 70, 72]]
我尝试了下面的代码,我认为这不是完美的方法。你知道吗
def lsp(litt):
lia = []
for i in range(len(litt)-1):
if len(litt)>=2:
if litt[i+1]-litt[i] >= 4:
lia.append(litt[i])
litti = []
for i in lia:
if i in litt:
litti.append(litt.index(i))
litti.insert(0,0)
littil = []
for i in range(len(litti)-1):
littil.append([litti[i],litti[i+1]])
t1 = []
for i,j in enumerate(littil):
t2 = []
if i==0:
t2.append([j[0], j[1]])
if i!=0:
t2.append([j[0]+1,j[1]])
t1.append(t2)
t1 = [i for j in t1 for i in j]
fl = []
for i,j in t1:
fl.append(litt[i:j+1])
fl.append(litt[t1[-1][1]+1:])
return fl
我想通过使用itertools.groupby组,但不知道怎么做。你知道吗
使用简单for循环的另一个解决方案:
我喜欢这样,定义切片方法并传递lambda谓词:
在许多情况下有用。你知道吗
相关问题 更多 >
编程相关推荐