一线生成器,其作用类似于reduce,但会产生所有中间结果

时间:2019-01-06 06:58:12

标签: python generator reduce recurrence

我喜欢在Python中实现各种常用的高级算法行为是如此容易。

我现在正在寻找实现recursive sequences或下一个值取决于最近生成的上一个值的O(1)的任何其他类型的生成器的最佳方法。

即是否可以在一行中实现以下reduceGenerator(可能使用现有的reduce function)?

示例

生成器

def reduceGenerator(f, iterable, initialValue):
    it = iter(iterable)
    value = initialValue
    for x in it:
        value = f(value, x)
        yield value

用例:

以下内容生成序列(a * s[i-1] + b) mod m

s = reduceGenerator(lambda prev, i: (a * prev + b) % m, range(N), s0)
s1 = next(s)
s2 = next(s)

0 个答案:

没有答案