说我有一个函数li = [fun1, fun2, ..., funk]
的列表,这些函数带有一个参数并返回一个布尔值。我想将它们组合成一个函数,该函数在其参数求值时返回每个fun
的逻辑和返回值。 (换句话说,我想拥有fun(x) = fun1(x) and fun2(x) and ... and funk(x)
。)
是否有一种优雅的方法?
答案 0 :(得分:2)
使用all创建复合函数
def func(x, lst):
#lst is the list of functions and x is used as an argument for functions
return all(fun(x) for fun in lst)
然后将其命名为
func(x,[fun1, fun2, fun3,...., funk])
如果需要lambda函数,则可以执行以下操作,但这违反了PEP-8准则
始终使用def语句代替将lambda表达式直接绑定到标识符的赋值语句。
func = lambda x:all(fun(x) for fun in lst)
并命名为
func(x)
答案 1 :(得分:0)
all会做到
all(func(x) for func in li)