生成功率为2的Python数组

时间:2018-03-09 18:47:22

标签: 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

有更好的方法吗?

5 个答案:

答案 0 :(得分:6)

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

>>> 2 ** np.arange(4)
array([1, 2, 4, 8])

这是广播指数。

答案 1 :(得分:5)

也许只是:

l = [2**i for i in range(n)]

答案 2 :(得分:1)

根据 documentation,您可以使用 power() 函数在 numpy 中增加所需的功率。

即要增加 2 的幂,您可以使用:np.power(np.arange(4), 2)

答案 3 :(得分:0)

limit = int(input('Limit: '))
l = []

for i in range(limit):
    l.append(2**i)

最好不要将list用作变量,因为它是一种数据类型并且具有内置的list()函数

答案 4 :(得分:0)

我不确定你的问题是什么 你可以这样做:

n_powers = 4
list = []
for i in range(n_powers):
    list.append(2 ** i)
print(list)