[PEP202 listcomps] (was RE: [Python-Dev] Product iteration)

M.-A. Lemburg mal@lemburg.com
Wed, 26 Jul 2000 12:32:32 +0200

Fredrik Lundh wrote:
> SETL sure has a pythonic feel...
> with a few improvements, of course (like the [start next end]
> range literals...  too late to fix that in python, I suppose...)
> and personally, I prefer their "tuple former" syntax over the the
> current PEP202 proposal:
>     [expression : iterator]
>     [n : n in [1:100]]
>     [(x**2, x) : x in [1:5]]
>     [a : a in y if a > 5]
> (all examples are slightly pythonified; most notably, they
> use "|" or "st" (such that) instead of "if")
> the expression can be omitted if it's the same thing as the
> loop variable, *and* there's at least one "if" clause:
>     [a in y if a > 5]
> also note that their "for-in" statement can take qualifiers:
>     for a in y if a > 5:
>         ...
> is there any special reason why we cannot use colon instead
> of "for"?

For mathematicians the [<expr> : <condition>] or
[<expr> | <condition>] looks natural since it's their
every day style of writing sets, but I doubt that CP4E users
get the grasp of this.

Anyway, whatever syntax you choose, please make sure that
the <expr> and the <condition> parts are very well visibily
separated. [<expr> for <vars> in <list>] doesn't fall
in that category, IMHO.

Hehe, this is starting to get the feel of SQL with their
horrible SELECT syntax: SELECT <vars> FROM <list> WHERE
<condition> ORDER BY <vars> etc. pp.

Marc-Andre Lemburg
Business:                                      http://www.lemburg.com/
Python Pages:                           http://www.lemburg.com/python/