python - 如何在 Python 中的每一步都得到 "reduce"的结果?

标签 python functional-programming

<分区>

在 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 中获得这样的列表(或者最好是迭代器)?一般来说,这个函数操作有名字吗?

最佳答案

我找到了正确的函数:在 Python 中,它称为 accumulate

>>> from itertools import accumulate
>>> list(accumulate([3, -1, 2], operator.add))
[3, 2, 4]

它似乎只在 Python 3 中可用。但是现在每个人都升级了,对吧? :)

关于python - 如何在 Python 中的每一步都得到 "reduce"的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32923548/

相关文章:

scala - 什么是 intercalate 的逆函数,如何实现它?

Scala的函数作为参数的用法

java - 如果您将 Scala 用作命令式语言,那么您做错了吗?

python - Flask 和 POST/GET 的问题

python - 如何为 PyDev 配置 Eclipse? Python 没有出现在首选项窗口中

python - 使用 __gte 作为字符串日期 django

python - 将(部分)numpy recarray 转换为二维数组?

c# - 对方法 C# 的引用

functional-programming - Perl 6使用reduce一次计算int数组的平均值

python - 如何让GtkMenuToolButton在发出 'clicked'信号时打开相同的菜单?