在Python中生成一定范围内的数字的最快方法

问题描述 投票:0回答:1

我想创建一组最多为

2**n
的数字。不需要迭代器或任何东西,只需一组数字,这样我就可以进行集合减法(基本上我有另一组数字,我想用它减去从
0
2**n-1
的所有数字的集合)。

现在我正在使用

{i for i in range(2**n)}
,当
n
约为~30时,速度相当慢。我尝试使用
np.arange
,但速度更慢。最快的方法是什么?

python python-3.x performance optimization range
1个回答
0
投票

我测试了你的解决方案

{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

所以后者更快,但数量级是相同的。

© www.soinside.com 2019 - 2024. All rights reserved.