gpt4 book ai didi

带有reduce函数的python cumsum

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:12 27 4
gpt4 key购买 nike

我正在尝试使用reduce函数在python中编写累积和的版本。这是到目前为止我的代码:

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 函数中,python 不知道 a (我的累加器参数)是一个列表对象,并且我希望我的 reduce 函数返回一个列表。在其他函数式编程语言中,它可能会要求我指定 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)

关于带有reduce函数的python cumsum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47864028/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com