4

Python でおそらく 1000 万個の数字のセットを追跡する必要があります。(すべての数値は 0 から 2^32 の間です)。整数の最大値を事前に知っており、0 から最大の間で、値の 20 ~ 80% がセットに含まれます。

私の現在のコードは、組み込みの を使用していsetます。この方法では遅すぎます。パフォーマンスを考慮する限り、これを行う最善の方法は bitarray ( https://pypi.python.org/pypi/bitarray/など) を使用することです。

bitarray を使用してadd(n)remove(n)メソッドでクラスを構築するのは簡単です。どうすればいいかわからないのはサポートfor n in bitarray_set:です。イテレータまたはイテラブルを使用する必要があると思いますが、その方法がわかりません。これは可能ですか?どのように?

4

1 に答える 1

2

bitarrayitersearch■あるビット配列が別のビット配列に出現するすべての位置を反復処理するメソッドをサポートします。それを使用します:

def __iter__(self):
    return self.bits.itersearch(bitarray([True]))
于 2013-07-31T22:28:58.793 に答える