[Python-ideas] Statements vs Expressions... why?

Greg Ewing greg.ewing at canterbury.ac.nz
Tue Sep 16 01:41:22 CEST 2008

Cliff Wells wrote:
> On Mon, 2008-09-15 at 14:11 +1200, Greg Ewing wrote:
>>Cliff Wells wrote:
>>>'-'.join ( 
>>>     for J in I: YIELD ( for j in J: YIELD j ) 
> join() takes care of flattening the final yielded iterator.

But the final iterator is yielding other iterators,
not strings, unless I misunderstand the semantics you
have in mind.

> Get into nested listcomps and the
> readability (or more to the point the comprehensibility) pretty much
> vaporizes.

That depends on what you mean by "nested listcomps". I agree
that nesting one entire listcomp inside another tends to
look rather confusing:

   [f(a) for a in [g(b) for b in y]]

But that's not the same thing as having nested *loops*
within a single listcomp, which I don't think is particularly
bad at all:

   [f(a, b) for a in x for b in y]

or if you prefer,

   [f(a, b)
     for a in x
       for b in y]

> Sure, I think listcomps have a place.  I still maintain that they are
> logically redundant if you have if-expressions (not to mention less
> flexible)

Yes, but they're also logically redundant even if you don't
have statement-expression equivalence, so that's not an argument
for merging statements and expressions.


More information about the Python-ideas mailing list