寻找折叠式的成语

时间:2013-05-17 19:43:08

标签: python python-3.x functional-programming

所以我的朋友提出了一个让我解决的问题,而我正在编写一个功能风格的Python解决方案。问题本身不是我的问题;我正在寻找一种我目前无法找到的成语。

我需要的是折叠,但它不是对每个应用程序使用相同的函数,而是对包含函数的另一个列表进行类似地图的耗尽。例如,给定此代码:

nums = [1, 2, 3]
funcs = [add, sub]
special_foldl(nums, funcs)

函数(special_foldl)会将数字列表向下折叠为((1 + 2) - 3)。有没有优雅地做到这一点的功能/习语,或者我应该自己滚动?

1 个答案:

答案 0 :(得分:2)

Python标准库中没有这样的功能。你必须自己动手,也许是这样的:

import operator
import functools

nums = [1, 2, 3]
funcs = iter([operator.add, operator.sub])

def special_foldl(nums, funcs):
    return functools.reduce(lambda x,y: next(funcs)(x,y), nums)

print(special_foldl(nums, funcs))
# 0