def powers(n, k):
"""Compute and returns the indices numbers of n, up to and including n^k"""
b = range(k+1)
print b
a = []
for i in b:
print a
a.append(n**b)
return a
以上代码是我对此问题的尝试。然而它返回:
TypeError: unsupported operand type(s) for ** or pow(): 'int' and 'list'
因此我的代码的n ** b部分存在一些问题。
答案 0 :(得分:3)
您可能对使用列表理解感兴趣,这些通常比自己循环遍历列表更有效。此外,您我们正在使用您迭代的列表而不是项目。
def powers(n, k):
"""Compute and returns the indices numbers of n, up to and including n^k"""
return [n**i for i in range(k+1)]
答案 1 :(得分:2)
而不是
a.append(n**b)
使用
a.append(n**i)
或者您只需使用map()
功能:
base = 10
lst = xrange(10)
result = map(lambda x: base**x, lst) # 10^0 to 10^9
如果您不使用浮点算术(或者您不关心舍入引入的不精确),您还可以使用增量方法(n^k = n^(k-1) * n
),对于大型数组可能会更快一些(虽然上面的算法通常在n log n
计算,但这个算法是线性的。)