Nicola Musatti <[EMAIL PROTECTED]> writes: > >>> a = [f(x) + g(y) for x,y in izip(m1, m2) if h(x,y).frob() == 7] > [...] > > There you replace one line of code with 40+ lines to get around the > > absence of GC. Sounds bug-prone among other things. > > Come on, you didn't define f, g, izip, h or frob either. It's more > like 5 to one. Furthermore your code is more compact due to the > existence of list comprehensions, not because of GC. Had you written a > loop the difference would be smaller.
No I don't need a loop if I don't use the listcomp. I could say a = map(lambda x,y: f(x)+g(y), ifilter(lambda x,y: h(x,y).frob==7, izip(m1, m2))) the listcomp is basically syntax sugar for that. The issue here is that Python is simply more expressive than C++, which doesn't support creation of higher order functions like that. However, one of the consequences of programming in this style is you allocate a lot of temporary objects which best managed by GC. -- http://mail.python.org/mailman/listinfo/python-list