[Python-ideas] "While" suggestion
Terry Reedy
tjreedy at udel.edu
Fri Aug 22 20:41:21 CEST 2008
Boris Borcic wrote:
> Terry Reedy wrote:
>> So it breaks the intended identity in Py3: list(genexp) == [genexp].
>
> FYI, there is nothing specific to Py3, Python 2.5 and 2.4 behave the same.
FYI, there *is* something specific to Py3: the willingness to break old
code. Originally, list comps were defined as having the same result as
an equivalent series of for loops and conditional statements:
x = [f(i) for i in seq if g(i)] # same as
_ = []
for i in seq:
if g(i):
_.append(f(i))
x = _
About the time 2.5 came out (or maybe before), and generator expressions
were in, it was decided that this definition, which results in 'leaking'
iteration variables out of comprehensions, was a design mistake, and
that the new identify given above would be better. When implementing
[genexp] as list(genexp) was found to take much longer (2x?), an
alternative was found that was nearly as fast as the 2.x implementation
but stopped the leakage and seemed otherwise identical in effect to
list(genexp). The only exception I have seen discussed arises from the
use of StopIteration outside an iterator .__next__ metrhod.
tjr
More information about the Python-ideas
mailing list