作者:陈晏亚363951 | 来源:互联网 | 2023-02-01 22:49
例如我们有[0, 1, 3, 5, 7, 8, 9, 10, 12, 13]
。
结果必须是7, 8, 9, 10
因为它们彼此相邻,按索引排列并且是连续的整数,并且此链长于0, 1
。
英语不是我的母语,如果写作有点晦涩,请原谅。
1> Moses Koledo..:
组的物品进入子序列使用itertools.groupby
基于从增加计数(由提供恒定的差异itertools.count
对象),然后使用把最长序列内置max
于关键参数len
:
from itertools import groupby, count
lst = [0, 1, 3, 5, 7, 8, 9, 10, 12, 13]
c = count()
val = max((list(g) for _, g in groupby(lst, lambda x: x-next(c))), key=len)
print(val)
# [7, 8, 9, 10]
您可以在结果中包含组键(被抑制为_
),以进一步了解其工作原理。
这真是太棒了。