[Python-Dev] zip() and list-comprehension with commas

Peter Schneider-Kamp peter@schneider-kamp.de
Wed, 12 Jul 2000 10:00:33 +0000


Ka-Ping Yee wrote:
> 
> Taking this all together provides one coherent solution:
> 
>     - zip() built-in produces a lazy list-zipper object

+1 on this. no performance hit (probably a small gain), "zip" is imho
            the right name (see e.g. haskell). also answers on c.l.py
            could be shorter, saving considerable bandwidth <wink>
> 
>     - list-comps are written [<expr>, <clause>, <clause>, ...]
>           where each <clause> is "for x in y" or "if z"

+0.5 on the concept, some questions:

--------------------------------------------------------------------

I know special character are evil, but in this case I think
[<expr> | <clause>, <clause>, ...]
would be on order of magnitude easier to read. Why not?

--------------------------------------------------------------------

Would [x,y , for x in list1, if x > 1, if y > 2, for y in list2]
be allowed? In other words: Should there be some rules of ordering?
What would the above list comprehension produce for
list1 = list2 = [1, 2, 3]?

--------------------------------------------------------------------

Would the following be allowed (and desirable)?
y = 3
[ x + y , for x in [1, 2, 3], if x > 1]
producing [5, 6]

--------------------------------------------------------------------

I don't know Python's parser, so I am sorry if this is a non-issue:
How does it resolve the ambiguity between
[<expr>, <expr>, ...] and [<expr>, <clause>, <clause>, ...]?
Especially something like
[x, y, z, for x in l1, for y in l2, for z in l3] concerns me.

--------------------------------------------------------------------

that's it for now,
Peter
--
Peter Schneider-Kamp          ++47-7388-7331
Herman Krags veg 51-11        mailto:peter@schneider-kamp.de
N-7050 Trondheim              http://schneider-kamp.de