我有一个查询
,它是一个数字列表。我想获取出现数字 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/