首页 > 解决方案 > Python 返回值的开始/停止索引

问题描述

鉴于此列表:

a = ['a','b','b','b','c','c','d','e','e']

我想返回一个列表列表,每个列表都包含值的开始和停止索引,如下所示:

[[0,0], [1,3], [4,5], [6,6], [7,8]]

标签: pythonpython-3.xlist

解决方案


使用itertools.groupby文档):

a = ['a','b','b','b','c','c','d','e','e']

from itertools import groupby

last_index = 0
out = []
for v, g in groupby(enumerate(a), lambda k: k[1]):
    l = [*g]
    out.append([last_index, l[-1][0]])
    last_index += len(l)

print(out)

印刷:

[[0, 0], [1, 3], [4, 5], [6, 6], [7, 8]]

推荐阅读