我喜欢在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)