我有我所知道的增加值,这样的列表作为如何查找列表中子集的索引?
x = [1, 2, 3, 4, 5, 6]
我正在寻找一些范围[min, max]
内的子集的索引。例如。我想要
>> subset_indices(x, 2, 4)
[1, 3]
>> subset_indices(x, 1.1, 7)
[1, 5]
有没有一个很好的pythonic这样做?
我有我所知道的增加值,这样的列表作为如何查找列表中子集的索引?
x = [1, 2, 3, 4, 5, 6]
我正在寻找一些范围[min, max]
内的子集的索引。例如。我想要
>> subset_indices(x, 2, 4)
[1, 3]
>> subset_indices(x, 1.1, 7)
[1, 5]
有没有一个很好的pythonic这样做?
在从肯尼·奥斯特罗姆和火山的建议,我实现它只是作为
import bisect
def subset_indices(sequence, minv, maxv):
low = bisect.bisect_left(sequence, minv)
high = bisect.bisect_left(sequence, maxv, lo=low)
return [low, high]
看平分线模块。它专为此设计,并具有您想要的确切功能。 –
解决方案取决于列表的大小。从简单的搜索算法到树。 – jmugz3
@KennyOstrom看起来很完美,谢谢。 – pingul