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]
需要找到与
但是我有一个包含多组递增值的列表,例如
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]