python - 如何以功能方式对元素求和

标签 python functional-programming

我正在尝试编写一个映射列表元素的函数,以使用 python 以函数式样式获取元素和列表中先前元素的总和,例如:

func([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) = [0, 1, 3, 6, 10, 15, 21, 28, 36, 45]

我尝试过使用递归,但是得到了一个长列表的 RuntimeError: maximum recursion depth exceeded

def recursion_way(inlist, accu, summ):
    if len(inlist) == 0:
         return accu
    else:
        return recursion_way(inlist[1:], accu + [summ + inlist[0]], summ + inlist[0])

最佳答案

理解算不算?

>>> [sum(l[:i]) for i, _ in enumerate(l)]
[0, 0, 1, 3, 6, 10, 15, 21, 28, 36]

或者可能使用reduce:

reduce(
    lambda (sums, last), x: (sums+[x+last], x+last),
    l, ([], 0)
)[0]

或者另一种方式:

reduce(lambda sums,x: sums+[x+sums[-1]], l[1:], l[:1])

关于python - 如何以功能方式对元素求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13728486/

相关文章:

python - 操作错误 : cursor "_django_curs_<id>" does not exist

python - 如何在 python 中对两个 np.array 执行两个样本不等大小的 t 检验?

python - 需要一本好的初学者 WSGI 指南

用于函数式编程的 pythonic 风格

scala - 将 'A => F[G[B]]' 转换为 'F[G[A=>B]' scala

kotlin - 合并 map 列表(字符串列表)

python - 使用 os.walk 从目录及其子目录中获取所有文件

python - PyCharm 代码检查不包括 PEP 8

functional-programming - lambda 演算中列表元素的总和和列表长度

haskell - 用于交换函数参数的函数类型