我目前正在开展一个项目,我经常需要做以下事情:
map(lambda r: f(g(h(r))), mylist)
目前我已创建此课程:
class NestedCalls(object):
def __init__ (self, *args):
self.__fn = list(args)
self.__fn.reverse()
def __call__ (self, *args, **kargs):
v = self.__fn[0] (*args, **kargs)
for f in self.__fn[1:]:
v = f (v)
return v
然后我就这么做:
map(NetstedCalls(f, g, h), mylist)
哪个效果很好,但我想知道是否有内置工具可以做同样的事情?我一直在浏览python文档,但遗憾的是我并不是真的如何命名这样的工具/类。
答案 0 :(得分:0)
这是一种替代功能的方法。实际上去构建简单的函数来说明它:
def plus1(a):
return a+1
def minus3(a):
return a-3
def or5(a):
return a*5
# this one could be skipped
def apply(a,b):
return b(a)
reduce(apply,[plus1,or5,minus3],10)
# without apply
reduce(lambda a,b: b(a),[plus1,or5,minus3],10)
这是你在找什么?