A = [1,2,0,0,3,4,5,-1,0,2,-1,-3,0,0,0,0,0,0,0,0,-2,-3,-4,-5,0,0,0]
返回列表中 0
最长序列的初始和结束索引。
因为,上面列表中 0
的最长序列是 0,0,0,0,0,0,0,0
所以它应该返回 12,19
作为开始和结束索引。请帮助一些一行 python 代码。
我试过了 :
k = max(len(list(y)) for (c,y) in itertools.groupby(A) if c==0)
print(k)
返回
8
作为最大长度。现在,如何找到最长序列的开始和结束索引?
最佳答案
您可以先使用 enumerate
用索引压缩项目,
然后 itertools.groupby(list,operator.itemgetter(1))
按项目分组,
使用 0
仅过滤 list(y) for (x,y) in list if x == 0
,
最后 max(list, key=len)
得到最长的序列。
import itertools,operator
r = max((list(y) for (x,y) in itertools.groupby((enumerate(A)),operator.itemgetter(1)) if x == 0), key=len)
print(r[0][0]) # prints 12
print(r[-1][0]) # prints 19
关于python - 在整数列表中找到最长的 0 序列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40166522/