python - Forcing a list out of a generator -


>>>def change(x):  ...    x.append(len(x)) ...    return x >>>a=[] >>>b=(change(a) in range(3)) >>>next(b) [0] >>>next(b) [0,1] >>>next(b) [0,1,2] >>>next(b) traceback ... stopiteration >>>a=[] >>>b=(change(a) in range(3)) >>>list(b) #expecting [[0],[0,1],[0,1,2]] [[0,1,2],[0,1,2],[0,1,2]]  

so testing understanding of generators , messing around command prompt , i'm unsure if understand how generators work.

the problem calls change(a) return the same object (in case, object value of a), object mutable , changes value. example of same problem without using generators:

a = [] b = [] in range(3):    a.append(len(a))    b.append(a) print b 

if want avoid it, need make copy of object (for example, make change return x[:] instead of x).


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -