在Python 3.3中,您可以使用
itertools.accumulate:
import itertoolsdef generate(f, x): return itertools.accumulate(itertools.repeat(x), lambda v,_:f(v))for i, val in enumerate(generate(lambda x: 2*x, 3)): print(val) if i == 10: break

在Python 3.3中,您可以使用
itertools.accumulate:
import itertoolsdef generate(f, x): return itertools.accumulate(itertools.repeat(x), lambda v,_:f(v))for i, val in enumerate(generate(lambda x: 2*x, 3)): print(val) if i == 10: break