通常在创建某些数字序列时,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
有更好的方法吗?
答案 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)