-1
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 部分存在一些问题。

4

2 回答 2

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)]
于 2013-10-29T10:54:34.823 回答
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,这将是线性的)。

于 2013-10-29T10:51:54.630 回答