所以我的朋友提出了一个让我解决的问题,而我正在编写一个功能风格的Python解决方案。问题本身不是我的问题;我正在寻找一种我目前无法找到的成语。
我需要的是折叠,但它不是对每个应用程序使用相同的函数,而是对包含函数的另一个列表进行类似地图的耗尽。例如,给定此代码:
nums = [1, 2, 3]
funcs = [add, sub]
special_foldl(nums, funcs)
函数(special_foldl)会将数字列表向下折叠为((1 + 2) - 3)。有没有优雅地做到这一点的功能/习语,或者我应该自己滚动?
答案 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