一个类似于reduce但产生所有中间结果的单行生成器

2024-09-27 23:27:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我喜欢用Python实现各种常用的高级算法行为是多么容易

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

也就是说,是否可以在一行中实现以下reduceGenerator(可能使用现有的^{} 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)

Tags: 方法算法示例类型valueitfunctioniterable

热门问题