【发布时间】:2015-10-02 00:13:59
【问题描述】:
在 Python 中,如果我想使用显式函数式编程来总结一个列表,我可以这样做
>>> import operator
>>> reduce(operator.add, [3, -1, 2])
4
Mathematica 比 Python 更接近纯函数式语言,将其称为 Fold 而不是 reduce,但结果是一样的。
In[1]:= Fold[Plus, {3, -1, 2}]
Out[1]= 4
所以现在,在 Mathematica 中,如果我想在迭代过程中的每一步都得到“折叠”的结果,我可以使用函数 FoldList。
In[2]:= FoldList[Plus, {3, -1, 2}]
Out[2]= {3, 2, 4}
如何在 Python 中获得这样的列表(或者最好是迭代器)?一般来说,这个函数式操作有名字吗?
【问题讨论】:
-
子程序通常称为
scan,数学运算称为prefix sum。 -
@gnat 与其对我的帖子投反对票,如果你是一个模组,你能把问题移到正确的板上吗?我的问题很好,我的回答是正确的。我似乎总是选错 StackExchange。
-
几年前,我尝试通过重新发布将问题从我认为 Stack Overflow 转移到 Server Fault,但模组告诉我,我不应该这样做,而且我应该要求他们移动问题。
标签: python functional-programming