return 列表中第一个元素的所有索引,其中后续值递增

return all indices of first elements in a list where subsequent values increase incrementally

需要找到与

非常相似的索引

但是我有一个包含多组递增值的列表,例如 lst = [0,1,2,7,8,9]

预期输出:[0,3]

带有简单循环的版本:

lst = [0,1,2,7,8,9]

prev = float('-inf')
out = []
for i,v in enumerate(lst):
    if v!=prev+1:
        out.append(i)
    prev = v
out

与列表理解相同的事情 zip:

out = [i for i, (a,b) in enumerate(zip([float('-inf')]+lst, lst)) if a+1!=b]

itertools.pairwise 的变体(python ≥3.10):

from itertools import pairwise
out = [0]+[i for i, (a,b) in enumerate(pairwise(lst), start=1) if a+1!=b]

输出:[0, 3]