我有一个列表,如下所示:
Values = [0,0,1,1,1,1,1,2,2,2,3,3,3,3,3,3,4,4,4,5,5,5,5]
我想得到的索引范围取决于值。例如,对于我想要得到的值“0”:
IndexRange0 = range(0,2) = [0,1]
#the element "0" is taking the positions 0 and 1 of the list "Values"
对于值“1”,我想得到:
IndexRange1 = range(2,7) = [2,3,4,5,6]
等等。 最后,我想得到一个“这些范围的列表”,比如说:
FinalOutput = [IndexRange0, IndexRange1, .... IndexRange5]
我不知道如何做到这一点,而不使用昂贵的建设与循环和糟糕的工作周围。你知道吗?你知道吗
注意:数字将一直递增。范围的长度是变量(这次有2个“零”,下次可能是5等),但其顺序总是一个接一个地增加(会有一组0,然后是一组1,然后是一组2等,直到一个非固定整数n)。事先谢谢你的帮助。你知道吗
由于值总是增加一个,因此这里有另一种方法可以做到这一点,而不必显式计算每个值的出现次数:
使用
itertools.groupby
:输出:
我建议
bisect
或itertools.takewhile
,这取决于您计划如何使用它。你知道吗对分:
给予
相关问题 更多 >
编程相关推荐