使用bitarray创建类似对象的列表

时间:2013-07-31 22:17:52

标签: python data-structures bitarray

我需要在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:。我想我需要使用迭代器或迭代,但我不知道该怎么做。这可能吗?怎么样?

1 个答案:

答案 0 :(得分:2)

bitarray支持itersearch方法,该方法遍历所有位置,其中一个位阵列发生在另一个位置。使用:

def __iter__(self):
    return self.bits.itersearch(bitarray([True]))