我有一个函数process
,其中包含一个函数列表和一个可迭代的函数。我想将该列表中的每个函数一个接一个地应用。我写的这个很好,但是...
def process(list_of_funcs, string):
for func in list_of_funcs:
string = ''.join(list(map(func, string)))
return string
ans = process([lambda c: c.upper(), lambda c: c + '0'], "abcd")
print(ans) # A0B0C0D0
我想跳过for循环(并以功能编程的方式进行)。有没有办法在python中呢?
您可以使用functools.reduce
参数
function
:将当前函数应用于上一个结果sequence
:功能列表initial
值:初始字符串def process(list_of_funcs, string):
return reduce(lambda res, f: ''.join(map(f, res)), list_of_funcs, string)
注意:不需要中间list
,join
需要一个iterator
这是一个具有3个函数的示例,其输出与您的初始for循环解决方案相同
fcts = [lambda c: c.upper(), lambda c: c + '0', lambda c: c * 2]
ans = process(fcts, "abcd")
print(ans) # AA00BB00CC00DD00
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句