我的代码有以下错误:float()参数必须是字符串或数字,而不是' list'。
我知道我的ww函数是一个值列表,但我不知道如何将它转换为float,因为ww是一个函数。我按照以下问题尝试了列表理解:
TypeError: float() argument must be a string or a number, not 'list' python
但它没有用。
def func(n):
return 2/(n+1)
def ww(n):
return [-1 + i*func(n) for i in range(0,n+1)]
def g(x,y):
return x**2 + y
这个g(x,y)实际上是球谐函数,但为了简单起见我这样做了。
def integral(n):
return [np.pi*func(n)*(1 + math.cos(np.pi*(-1 + i*func(n))))*g(np.pi*i,ww(n)) for i in range(0,n+1)]
答案 0 :(得分:0)
您的ww
函数返回一个浮点数列表,然后将其传递到g()
。计算失败,因为您无法将list
添加到数字。
如果不对数字执行某种操作,则无法“将浮动列表转换为浮点数” - 例如“添加”,“减去”,“相乘”。
但是,您可以将列表转换为numpy数组,该数组可以作为一个整体进行操作。将一个数字乘以一个数字乘以每个值,返回结果。
例如:
>>> a = np.array([1.0,2.0,3.0])
>>> b = 2
>>> b ** 2 + a
array([5.0, 6.0, 7.0])
如果您将ww
的返回值换行以转换为numpy数组,则g()
中的后续计算应该有效。
def ww(n):
return np.array([-1 + i*func(n) for i in range(0,n+1)])