生成功率为2的Python数组

Hon*_*ear 3 python arrays numpy

通常在创建某些数字序列时,python和numpy以一种简单的方式提供一些语法糖,而不用自己的for循环生成它们,例如range(start, stop, step).

我有一个相当简单的问题,我正在努力以优雅的方式解决:生成两个权力的列表.例如list = [1, 2, 4, 8, ...].

我想出来了

n_powers = 4
list = np.zeros(n_powers)
for i in range(0, n_powers): 
    list[i] = 2 ** i
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

Iva*_*hko 6

也许只是:

l = [2**i for i in range(n)]
Run Code Online (Sandbox Code Playgroud)


cs9*_*s95 6

你似乎在使用NumPy,所以为什么不这样做 -

>>> 2 ** np.arange(4)
array([1, 2, 4, 8])
Run Code Online (Sandbox Code Playgroud)

这是广播指数.