具有范围的指数幂

Exponential powers with range

我的代码有问题

def bconver(n,b):
    for i in range(n):
        x = b ** i

我正在尝试对 n 范围内的所有 i 值求 b 次方。我需要能够获取这些值并将它们除以 n,从而允许我将其更改为任何基数。

我已经尝试过此代码,但它不起作用,因为我无法在之后除以这些值。另外,我需要不在列表中的答案

x = [b ** i for i in range(n)]  

您可以将列表理解中的每个值除以 n:

x = [b ** i for i in range(n)]  
x_over_n = [a/n for a in x]

编辑:

def x_to_the_i_over_n(x, i, n):
    return x**i / n

n = 4
x = 123
results = []
for i in range(n):
    results.append(x_to_the_i_over_n(x, i, n))

编辑 2:

import numpy

b = numpy.array(range(10))
b**2
#--> array([ 0,  1,  4,  9, 16, 25, 36, 49, 64, 81])

b**2 / 4
#--> array([  0.  ,   0.25,   1.  ,   2.25,   4.  ,   6.25,   9.  ,  12.25, 16.  ,  20.25])

您可以在该列表理解中执行任何您想要的操作。例如,

x = [(b ** i) / n for i in range(n)]

听起来像您正在寻找的最终结果。如果你想要中间结果,只需使用另一个列表理解:

x = [b ** i for i in range(n)]
x_divided_by_n = [element / n for element in x]

如果您想要更简洁的方式来表达这些类型的操作,请考虑使用 numpy