[Python-Dev] accumulator display syntax

Guido van Rossum guido at python.org
Fri Oct 17 18:47:28 EDT 2003


> Hm.  What if list comprehensions returned a "lazy list", that if you took 
> an iterator of it, you'd get a generator-iterator, but if you tried to use 
> it as a list, it would populate itself?  Then there'd be no need to ever 
> *not* use a listcomp, and only one syntax would be necessary.
> 
> More specifically, if all you did with the list was iterate over it, and 
> then throw it away, it would never actually populate itself.  The principle 
> drawback to this idea from a semantic viewpoint is that listcomps can be 
> done over expressions that have side-effects.  :(

I don't think this can be done without breaking b/w compatibility.  Example:

  a = [x**2 for x in range(10)]
  for i in a: print i
  print a

Your proposed semantics would throw away the values in the for loop,
so what would it print in the third line?

--Guido van Rossum (home page: http://www.python.org/~guido/)



More information about the Python-Dev mailing list