python generator endless stream without using yield
Question: i'm trying to generate an endless stream of results given a function f and an
initial value x so first call should give the initial value, second call
should give f(x), third call is f(x2) while x2 is the previous result of f(x)
and so on..

what i have come up with:

    
    
    def generate(f, x): 
       return itertools.repeat(lambda x: f(x))
    

which does not seem to work. any ideas? (i cant use yield in my code). also i
cant use more than 1 line of code for this problem. any help would be
appreciated.

also note that in a previous ex. i was asked to use the yield. with no
problems:

    
    
    while True:
        yield x
        x = f(x)
    

this works fine. but now.. no clue how to do it without


Answer: In Python 3.3, you can use `itertools.accumulate`:

    
    
    import itertools
    
    def 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
    

