函数powers(n,k)返回列表[1,n,n ^ 2,n ^ 3,...,n ^ k],其中k是整数

时间:2013-10-29 10:50:08

标签: python list integer indices

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

2 个答案:

答案 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计算,但这个算法是线性的。)