python - Python 返回值的开始/停止索引
问题描述
鉴于此列表:
a = ['a','b','b','b','c','c','d','e','e']
我想返回一个列表列表,每个列表都包含值的开始和停止索引,如下所示:
[[0,0], [1,3], [4,5], [6,6], [7,8]]
解决方案
使用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]]
推荐阅读
- sql - 两个日期之间的工作日与日历表
- php - 在 laravel 中包含 js 文件的最佳方法是什么?
- java - 允许两个类共享变量和方法
- angular - 使用嵌套订阅返回布尔值的函数
- bash - 生成命令(unimrcp 客户端)的 Unix shell 脚本不返回
- javascript - 为什么来自 nextElementSibling.tagName 的 TypeError?
- java - Java- 使用多个测试用例和每个测试用例中的多个值扫描以下输入的代码片段
- jquery - CTRL + P 打印不超过 1 页
- html - 未从 HTML 表单中的移动浏览器中为 Tab/Next 键发出 Keydown 事件
- php - 在 CURL POST 中传递的 $_GET 变量