[Python-ideas] Statements vs Expressions... why?
Greg Ewing
greg.ewing at canterbury.ac.nz
Mon Sep 15 04:11:48 CEST 2008
Cliff Wells wrote:
> Not that it's terribly relevant to what you say, but:
>
> '-'.join (
> for J in I: YIELD ( for j in J: YIELD j )
> )
No, I think you were right the first time. The above
looks like it will generate a sequence of iterators,
not a flat sequence of j values.
> x = [ J [ a ]
> for a in b
> if c ]
>
> vs
>
> x = for a in b:
> if c: continue J [ a ]
>
> The complexity has barely increased and yet the second form is already
> more readable
That's a matter of opinion. If you lay out the first one as
x = [ J [ a ]
for a in b if c ]
there's not much difference between them.
> Not to mention, the listcomp's placement of the
> yielded result before the loop and condition only works well when it's a
> very simple expression. It doesn't scale well with complexity (not that
> I think it was meant to).
You're right, it's not meant to. It's meant for the simple
cases where all the syntactic overhead of a full for-statement
and list appending code swamps the content. Given that, adding
any extra syntactic baggage, even just a 'continue' keyword,
reduces its effectiveness for its intended purpose.
Also, I think it reads quite nicely with the expression at
the beginning. It's modelled after the mathematical notation
for describing sets:
{x : some conditions on x}
--
Greg
More information about the Python-ideas
mailing list