Python 3.x 生成2的前n次幂的最快方法是什么?

Python 3.x 生成2的前n次幂的最快方法是什么?,python-3.x,math,optimization,exponent,Python 3.x,Math,Optimization,Exponent,我是用Python编写的,任何微小的优化都会有所帮助(我比时间限制少了0.01秒)。我需要生成2的前n次幂的列表: [1, 2, 4, ... 2 ^ n] 我现在编写了几段代码: powers = [1 << i for i in range(n)] 我可以对这些代码片段进行哪些优化,或者是否有一种全新的方法来完全解决这个问题?一个好的解释器会将乘2和左移位转换为相同的字节码指令。因此这两种方法最终都应该转换为相同的字节码,因此速度相同。位移位方法在O(n)中运行,而递增方法在

我是用Python编写的,任何微小的优化都会有所帮助(我比时间限制少了0.01秒)。我需要生成2的前n次幂的列表:

[1, 2, 4, ... 2 ^ n]
我现在编写了几段代码:

powers = [1 << i for i in range(n)]

我可以对这些代码片段进行哪些优化,或者是否有一种全新的方法来完全解决这个问题?

一个好的解释器会将乘2和左移位转换为相同的字节码指令。因此这两种方法最终都应该转换为相同的字节码,因此速度相同。

位移位方法在O(n)中运行,而递增方法在O(n^2)中运行,因此前者应该更快。不过,您可能应该对其进行基准测试以确保:。我能想到的唯一可能加速它的方法是在numpy中使用向量运算,但我不确定这会有多大帮助。第二种方法如何接近O(n^2)?它两次穿过长度为n的环。我认为它可能比第一种方法更有效的原因是它使用了类似于DP的方法,因为它建立在以前的解决方案的基础上,我认为这可能比每次使用第一种方法生成一个新数字要快一些。然而,我不知道这个图书馆——这很有帮助。谢谢哎呀,我误读了密码。对不起,你说得对。他们都在O(n)中运行,忽略该部分。在任何情况下,您最好对其进行分析。如果您的时间限制超出0.01秒,您是否尝试过重复提交相同的代码,并查看是否可以通过纯粹的运气获得稍微快一点的时间?您的程序中是否没有其他可以优化的内容?这似乎是我最不想去的地方。
powers = [1 for i in range(n)]
for i in range(1, n):
    powers[i] = powers[i - 1] * 2