Bengt Richter wrote: > Well, it seems you do have to put them in the scopes of different generators, > not just for-clauses, depending on the semantics you want e.g., > > >>> def stop(): raise StopIteration > ... > >>> list( ((x,y) for x in xrange(20) if x<5 or stop() for y in xrange(20) if > y<3 or stop())) > [(0, 0), (0, 1), (0, 2)] > >>> list( ((x,y) for x in xrange(20) if x<5 or stop() for y in (y for y in > xrange(20) if y<3 or stop()))) > [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2), (3, > 0), (3, 1), (3, 2), > (4, 0), (4, 1), (4, 2)] > thanks. it works and I have explained in another post why I initially confused and thought it didn't work. stand corrected.
However, I found something interesting which I don't quite understand : list((x for x in [1,2,3] if x<2 or stop())) works but a = [ x for x in [1,2,3] if x <2 or stop() ] doesn't. -- http://mail.python.org/mailman/listinfo/python-list