在python中,将函数列表一个接一个地应用于可迭代函数



我有一个函数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

  1. 作为function:将当前函数应用于上一个结果
  2. 作为sequence:函数列表
  3. 作为initial值:初始字符串
def process(list_of_funcs, string):
return reduce(lambda res, f: ''.join(map(f, res)), list_of_funcs, string)

注:不需要中间体listjoiniterator


这里有一个有3个函数的例子,它给出了与循环解决方案的初始输出相同的输出

fcts = [lambda c: c.upper(), lambda c: c + '0', lambda c: c * 2]
ans = process(fcts, "abcd")
print(ans)  # AA00BB00CC00DD00

相关内容

  • 没有找到相关文章

最新更新