2

我在 PYTHON 中编写了一个函数,如下所示,但我发现 SUM 在其中无法正常工作。

def func(a,*b):
    c = np.array([1,a,a**2,a**3])
    d = np.array(b)
    return sum(c*d)


a = 10
b = [0.1,0.2,0.3,0.4]

aa = np.array([1,a,a**2,a**3])
bb = np.array(b)
c = func(a,b)

print sum(aa*bb),c

代码的输出是432.1 [ 1.00000000e-01 2.00000000e+00 3.00000000e+01 4.00000000e+02]

有谁知道这里的 SUM 发生了什么?

4

1 回答 1

4

您的func函数签名将捕获b为参数列表,并*用作包罗万象的标记。这会b生成一个列表列表,带有一个参数。但是要定义bb你不这样做; 你只传入列表。

要么做:

bb = np.array([b])

或者做:

def func(a, b):
    c = np.array([1,a,a**2,a**3])
    d = np.array(b)
    return sum(c*d)

或者

def func(a, *b):
    c = np.array([1,a,a**2,a**3])
    d = np.array(b[0])
    return sum(c*d)

使两个代码路径等效。

于 2013-07-31T09:32:22.810 回答