• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

蟒蛇cumsum与减少功能

python 来源:user3685285 3次浏览

我想在python中使用reduce函数编写一个累积和的版本。这是我到目前为止的代码:蟒蛇cumsum与减少功能

from functools import reduce 

def my_cum_sum(arg): 
    return reduce(lambda a, x: (a.append(a[-1] + x)) if len(a) > 0 else a.append(x), arg, []) 

assert(my_cum_sum([1, 1, 1, 1]) == [1, 2, 3, 4])) 

但问题是,在我的lambda函数,蟒蛇不知道,(我的蓄能器参数)是一个列表对象,我想我的降低函数返回一个列表。在其他函数式编程语言中,它可能会要求我指定类型ax。但我是python的新手,并没有完全弄清楚它是如何处理类型和内容的。什么是解决这个问题的pythonic方式?

===========解决方案如下:

append返回None,所以你不能像这样将列表返回到reduce。 只需使用清单,并提出了单个元素的列表,或者只是取得了初步元素的列表之间的加成,如果列表为空:

from functools import reduce 

def my_cum_sum(arg): 
    return reduce(lambda a, x: a + [a[-1]+x] if a else [x], arg, []) 

print (my_cum_sum([1, 1, 1, 1])) 

结果:

[1, 2, 3, 4] 

(注意:if len(a)>0最好写成if a


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)