指定された部分文字列で始まるすべての要素のソートされた文字列リストを検索したいと思います。 ['bob', 'bob', 'bob']
を印刷しPythonで文字列接頭辞のバイナリ検索を実行
import bisect
names = ['adam', 'bob', 'bob', 'bob', 'bobby', 'bobert', 'chris']
names.sort()
leftIndex = bisect.bisect_left(names, 'bob')
rightIndex = bisect.bisect_right(names, 'bob')
print(names[leftIndex:rightIndex])
:
はここ正確な試合のすべてを発見する例を示します。
代わりに、がで始まり、「bob」という名前のすべてを検索したいとします。私が望む出力は['bob', 'bob', 'bob', 'bobby', 'bobert']
です。バイセクト検索の比較方法を変更できる場合は、name.startswith('bob')
を使用してこれを行うことができます。
例として、Javaでは簡単です。
Arrays.binarySearch(names, "bob", myCustomComparator);
ここで 'myCustomComparator'は、startswithメソッド(および追加のロジック)を利用するコンパレータです。
これをPythonでどうやって行うのですか?
あなたのニーズに応じて、データ構造体再 – jterrace