'For' loop symmetry with list comprehensions.

Sean Ross sross at connectmail.carleton.ca
Thu Jul 3 12:34:03 EDT 2003


"Hannu Kankaanpää" <hanzspam at yahoo.com.au> wrote in message
news:840592e1.0307021036.508d7d7d at posting.google.com...
> One can currently say this with list comprehensions:
>
> [x.lower() for x in words if x.startswith('foo')]
>
> Wouldn't it be better if the normal 'for' syntax was symmetrical
> with the notation used in list comprehensions?

If we were trying to be symmetrical, then:

>>> words = ("hello", "bonjour")
>>> otherwords = ("foo", "bar")
>>> msgs = ["%s %s"%(x,y) for x in words for y in otherwords]
>>> msgs
['hello foo', 'hello bar', 'bonjour foo', 'bonjour bar']


(being symmetrical) we should also be able to write:

>>> msgs = []
>>> for x in words:
...  for y in otherwords:
...   msgs.append("%s %s"%(x,y))
...
>>> msgs
['hello foo', 'hello bar', 'bonjour foo', 'bonjour bar']


as follows:

msgs = []
for x in words for y in otherwords:
    msgs.append("%s %s"%(x,y))


If you really want symmetry, well, this is symmetrical. Do you want this as
well?

-0
Sean






More information about the Python-list mailing list