Python 如何使用梯形规则集成打印列表的函数

Python 如何使用梯形规则集成打印列表的函数,python,Python,我想积分函数func(s),当给定s的值时,它会给出一个列表 def func(s): for i in range(1, 100): p = i * 2 + s * 2 yield p def trap0 (f,lowerl,upperl,n): h = float (upperl-lowerl)/n s =(list(f(lowerl))+list(f(upperl)))/2 for i in range (1,n):

我想积分函数func(s),当给定s的值时,它会给出一个列表

def func(s):
    for i in range(1, 100):
        p = i * 2 + s * 2
        yield p

def trap0 (f,lowerl,upperl,n):
    h = float (upperl-lowerl)/n
    s =(list(f(lowerl))+list(f(upperl)))/2
    for i in range (1,n):
        s = s+f(lowerl+i*h)
    return s * -h

lists1=[]

lists1.append(trap0(func,-1,9,50))
print lists1
我一直在
TypeError:+:“generator”和“generator”的操作数类型不受支持。请提供帮助

因为
func
返回一个生成器,您需要将它返回的内容转换为列表:

def trap0 (f,lowerl,upperl,n):
    h = float (upperl-lowerl)/n
    s =(list(f(lowerl)) + list(f(upperl)))/2
    for i in range (1,n):
        s = s + list(f(lowerl+i*h))
    return s * -h

由于
func
返回生成器,因此需要将其返回的内容转换为列表:

def trap0 (f,lowerl,upperl,n):
    h = float (upperl-lowerl)/n
    s =(list(f(lowerl)) + list(f(upperl)))/2
    for i in range (1,n):
        s = s + list(f(lowerl+i*h))
    return s * -h

我已更改func以返回范围(1100)内I的list
def func:l=[]:l.append(I*2+s*2)return l
,但我仍然在
func
中的行
s=(f(lowerl)+f(upperl))/2
中得到不支持的操作数类型的错误。这使得
func
成为一个生成器函数。我已经更改了该函数,为范围(1,10)中的I返回一个list
def func(s):l=[]:l.append(I*2+s*2)返回l print(func(10))def trap0(f,lowerl,upperl,n):h=float(upperl-lowerl)/ns=(list(f(lowerl))+list(f(upperl)/2))为范围(1,n)中的I:s=s+list(f(lowerl+i*h))返回s*-h lists1=[]lists1.append(trap0(func,-1,9,50))
但我仍然不断得到/:'list'和'int'不支持的操作数类型的错误。你能帮我解决这个问题吗在注释中读起来有点困难。你介意把它放上去还是放上去?你不能把一张单子除以二。你想用它来完成什么?我已经更改了func,为范围(1100)中的I返回一个list
def func(s):l=[],l.append(I*2+s*2)返回l
,但是对于/:'list'和'int'行
s=(f(lowerl)+f(upperl))我仍然得到错误
不支持的操作数类型/2
func
中,你说
产生p
。这使得
func
成为一个生成器函数。我已经更改了该函数,为范围(1,10)中的I返回一个list
def func(s):l=[]:l.append(I*2+s*2)返回l print(func(10))def trap0(f,lowerl,upperl,n):h=float(upperl-lowerl)/ns=(list(f(lowerl))+list(f(upperl)/2))为范围(1,n)中的I:s=s+list(f(lowerl+i*h))返回s*-h lists1=[]lists1.append(trap0(func,-1,9,50))
但我仍然不断得到/:'list'和'int'不支持的操作数类型的错误。
你能帮我解决这个问题吗在注释中读起来有点困难。你介意把它放上去还是放上去?你不能把一张单子除以二。你想用它来完成什么?