python获取列表中数字开始和结束位置的索引

标签 python list

我有一个查询,它是一个数字列表。我想获取出现数字 1 的索引范围。该范围从 1 出现时开始,到它未出现的索引处结束。我举了一个例子来说明这一点。

query= [0,0,0,0,0,1,1,1,0,1,0,0,1,1,0]

answer = [[5,8],[9,10],[12,14]]

注意:我不是在 Python 的列表中寻找某个值的第一个和最后一个索引。我正在寻找它们开始和结束的所有地方。

更新:从下面的一些建议答案看来,Itertools 对这些东西来说非常方便。

最佳答案

您可以使用 itertools.dropwhile 来执行此操作。

>>> query = [0,0,0,0,0,1,1,1,0,1,0,0,1,1,0]
>>> n = 1
>>>
>>> from itertools import dropwhile
>>> itr = enumerate(query)
>>> [[i, next(dropwhile(lambda t: t[1]==n, itr), [len(query)])[0]] for i,x in itr if x==n]
[[5, 8], [9, 10], [12, 14]]

关于python获取列表中数字开始和结束位置的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57291111/

相关文章:

python - 使用 Beautiful Soup 解析 Grobid .tei.xml 输出

python - Python中Matlab imfilter的等价函数

Python NetworkX 用 dict 添加边列表

python - Azure 认知服务文本转语音 REST API 中的 requests.exceptions.ConnectTimeout 错误

javascript - 如何循环浏览输入的 Viewbag 列表?

java - 列表和 map 的通用集合?

list - Python - 在理解中比较两个列表

python - 列表中最大的 n 个元素的项目和索引

python - 如何在 ipython 笔记本中显示 PIL 图像

python - 如何在列表理解中转换这个 for 循环?