# [Python-Dev] list comprehensions again...

**Greg Wilson
**
gvwilson@nevex.com

*Tue, 11 Jul 2000 10:42:55 -0400 (EDT)*

>* > [x,y for x in (1,2,3) for y in (4,5,6)]
*>* Hm, I suppose the programmer meant the same as
*>* [(x,y) for x in (1,2,3) for y in (4,5,6)]
*>* Would it be really bad if we forced them to write it that way?
*
Strongly prefer the latter, as it permits:
[[x,y] for x in (1,2,3) for y in (4,5,6)]
(either now or in future). Would it also permit:
[{x:y} for x in (1,2,3) for y in (4,5,6)]
i.e. dict construction using list comprehension? I'd use this in quite a
few places.
>* Side note: the suggested syntax here (for i in seq1 for j in seq2)
*>* looks like a potential alternative for the currently proposed parallel
*>* for loop syntax (for i in seq1; j in seq2).
*>*
*>* Only problem: the for-for variant could be mistaken by someone used to
*>* see nested loops as meaning the same as
*>*
*>* for i in seq1:
*>* for j in seq2: ...
*
Until yesterday's posting, I assumed that this is what for-for loops would
do, i.e. that they'd deliver a cross-product rather than one-from-each.
Was going to ask whether:
for i in seq1 and j in seq2:
foo
would be clearer, but then realized that people might assume it implied
that:
for i in seq1 or j in seq2:
foo
would also work, meaning either "while either list is non-empty" or
"cross-product".
Random thoughts,
Greg