【发布时间】:2013-08-01 15:53:19
【问题描述】:
我需要在 Python 中跟踪一组可能有 1000 万个数字。 (所有数字都在 0 到 2^32 之间)。我会事先知道整数的最大值,并且在 0 和最大值之间,20-80% 的值将在集合中。
我当前的代码使用内置的set。这种方式太慢了。就性能而言,最好的方法是使用位数组(例如 https://pypi.python.org/pypi/bitarray/ )。
我很容易使用位数组来构建具有add(n) 和remove(n) 方法的类。我不知道该怎么做是支持for n in bitarray_set:。我想我需要使用迭代器或可迭代的,但我不知道该怎么做。这可能吗?怎么样?
【问题讨论】:
-
可能的 40 亿个数字中的 1000 万个数字对于 bitset 可能效率不高。你可能需要一些更聪明的东西。
-
@user2357112 - 我添加了更多细节,为什么它是高效的
-
好吧,这应该很有效。
标签: python data-structures bitarray