Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何构建python函数结果的通用总和_Python_Python 2.7 - Fatal编程技术网

如何构建python函数结果的通用总和

如何构建python函数结果的通用总和,python,python-2.7,Python,Python 2.7,我想用python构建函数的总和。然而,我不知道预付款的长度。所有功能均为类似类型,即具有一个输入和相同的输出类型。对两个人来说,这样的事情会管用的 In [180]: def H(f, g): ...: def _h(x): ...: return f(x) + g(x) ...: return _h 但是,我希望有一些通用的东西,我可以编写H(*args),它返回args中所有函数的总和(也只适用于一个函数) 这是构建函数和的唯

我想用python构建函数的总和。然而,我不知道预付款的长度。所有功能均为类似类型,即具有一个输入和相同的输出类型。对两个人来说,这样的事情会管用的

In [180]: def H(f, g):
     ...:     def _h(x):
     ...:         return f(x) + g(x)
     ...:     return _h
但是,我希望有一些通用的东西,我可以编写
H(*args)
,它返回
args
中所有函数的总和(也只适用于一个函数)


这是构建函数和的唯一方法,对吗?我不能为两个函数编写类似
h=f+g

编写可扩展的东西可能更容易。您应该使用内置函数
sum
进行实际的求和。这将返回一个将每个函数应用于输入x的值:

def map_funcs(x, *funcs):
    return (f(x) for f in funcs)

funcs = lambda x: x + 1, lambda x: x**2
x = 10
print(sum(map_funcs(x, *funcs)))
如果您愿意,您还可以将其制作为一个包装器,返回可调用的内容,类似于您已经得到的内容:

def map_funcs(*funcs):
    def wrapper(x):
        return (f(x) for f in funcs)
    return wrapper

funcs = lambda x: x + 1, lambda x: x**2
x = 10
print(sum(map_funcs(*funcs)(x)))
# 111

编写可扩展的东西可能更容易。您应该使用内置函数
sum
进行实际的求和。这将返回一个将每个函数应用于输入x的值:

def map_funcs(x, *funcs):
    return (f(x) for f in funcs)

funcs = lambda x: x + 1, lambda x: x**2
x = 10
print(sum(map_funcs(x, *funcs)))
如果您愿意,您还可以将其制作为一个包装器,返回可调用的内容,类似于您已经得到的内容:

def map_funcs(*funcs):
    def wrapper(x):
        return (f(x) for f in funcs)
    return wrapper

funcs = lambda x: x + 1, lambda x: x**2
x = 10
print(sum(map_funcs(*funcs)(x)))
# 111

是的,有可能。必须使用
sum()
内置函数返回给定列表中所有值的总和。在此之前,您当然必须计算所有函数的列表,这些函数都是使用正确的参数运行的
H()

def power_two(x):
    return x**2

def plus_20(x):
    return x + 20

def H(*args):

    def _h(x):
        _results = [f(x) for f in args]
        return sum(_results)

    return _h

if __name__ == '__main__':

    the_func = H(power_two, plus_20)
    final_result = the_func(2)

    print("(2^2) + (2+20) = %s" % the_func(2))
    print("(3^2) + (3+20) = %s" % the_func(3))
返回:

(2^2) + (2+20) = 26
(3^2) + (3+20) = 32

是的,有可能。必须使用
sum()
内置函数返回给定列表中所有值的总和。在此之前,您当然必须计算所有函数的列表,这些函数都是使用正确的参数运行的
H()

def power_two(x):
    return x**2

def plus_20(x):
    return x + 20

def H(*args):

    def _h(x):
        _results = [f(x) for f in args]
        return sum(_results)

    return _h

if __name__ == '__main__':

    the_func = H(power_two, plus_20)
    final_result = the_func(2)

    print("(2^2) + (2+20) = %s" % the_func(2))
    print("(3^2) + (3+20) = %s" % the_func(3))
返回:

(2^2) + (2+20) = 26
(3^2) + (3+20) = 32
试试这个:-

def H(*args):
    def _h(x):
      for func in args:
          z += func(x)
      return z
    return _h
只需循环函数参数,然后求和即可。我想很简单吧? 我希望有帮助

试试这个:-

def H(*args):
    def _h(x):
      for func in args:
          z += func(x)
      return z
    return _h
只需循环函数参数,然后求和即可。我想很简单吧? 我希望有帮助