2016-10-14 7 views
0

私はいくつかの範囲内にある[min, max]サブセットのインデックスを探しています、このようなリスト内のサブセットのインデックスを見つけるには?

x = [1, 2, 3, 4, 5, 6] 

として、増加している知っている値のリストを持っています。例えば。私が望む

>> subset_indices(x, 2, 4) 
[1, 3] 
>> subset_indices(x, 1.1, 7) 
[1, 5] 

これを行うには素晴らしいpythonicの方法がありますか?

+7

ルックとしてそれを実装しました。これのために設計され、あなたが望む正確な機能を持っています。 –

+0

解決策はリストのサイズに依存します。簡単な検索アルゴリズムからツリーへ。 – jmugz3

+0

@KennyOstrom完璧に見えます、ありがとうございます。 – pingul

答えて

1

はケニー・オストロムや火山からの勧告に続き、私は単純に二分モジュールで

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] 
+1

最小インデックスの値を保存して、最大インデックスを検索するために使用できました。 2番目のルックアップをより効率的にする - 大きなデータセットに影響を与える可能性があります。 – volcano

+0

@volcano素晴らしいアイデア!私は非常に多くのデータを使用しているので、その提案は間違いなく有用です。私は答えに加えました。 – pingul

関連する問題