在Python中相当于Haskell scanl

在Python中相当于Haskell scanl,第1张

在Python中相当于Haskell scanl

您可以使用它,如果它更优雅:

def scanl(f, base, l):    for x in l:        base = f(base, x)        yield base

像这样使用它:

import operatorlist(scanl(operator.add, 0, range(1,11)))

Python 3.x具有

itertools.accumulate(iterable, func=operator.add)
。它的实现如下。该实现可能会给您一些想法

def accumulate(iterable, func=operator.add):    'Return running totals'    # accumulate([1,2,3,4,5]) --> 1 3 6 10 15    # accumulate([1,2,3,4,5], operator.mul) --> 1 2 6 24 120    it = iter(iterable)    total = next(it)    yield total    for element in it:        total = func(total, element)        yield total


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5646393.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存