gpt4 book ai didi

python - 在整数列表中查找最长的 0 序列

转载 作者:太空宇宙 更新时间:2023-11-04 10:07:32 25 4
gpt4 key购买 nike

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)) 按项目分组,

使用 list(y) for (x,y) in list if x == 0 仅过滤 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com