我想创建一组最多为
2**n
的数字。不需要迭代器或任何东西,只需一组数字,这样我就可以进行集合减法(基本上我有另一组数字,我想用它减去从 0
到 2**n-1
的所有数字的集合)。
现在我正在使用
{i for i in range(2**n)}
,当n
约为~30时,速度相当慢。我尝试使用 np.arange
,但速度更慢。最快的方法是什么?
我测试了你的解决方案
{i for i in range(2**n)}
与仅使用
set(range(2**n))
使 n
等于 10 做 timeit
相比,我的机器上的结果如下
python -m timeit "{i for i in range(2**10)}"
10000 loops, best of 5: 35.6 usec per loop
python -m timeit "set(range(2**10))"
10000 loops, best of 5: 21 usec per loop
所以后者更快,但数量级是相同的。