[Python-ideas] More power in list comprehensions with the 'as' keyword

Leif Walsh leif.walsh at gmail.com
Fri Aug 29 03:16:20 CEST 2008


-1 on the first post.

> [l.strip() as stripped for l in text.split('\n') if stripped != '']

This is equivalent, with respect to semantics as well as efficiency, to:

[s for s in (l.strip() for l in text.split('\n')) if s != '']

And, even easier to read:

stripped = (l.strip() for l in text.split('\n'))
non_null_lines = [s for s in stripped if s]  # let's use the implicit
truth value too

It seems to me that there's too much being asked for here when the
tools are already all available.  Generator expressions/list
comprehensions seem to be getting a lot of attention from python-ideas
lately, when it's really making the code _harder_ to read, and not
even easier to write, because of all the extra thinking required.  In
fact, most of these things are better done with straight-out looping
and yielding:

for line in text.split('\n'):
  stripped = l.strip()
  if stripped:
    yield stripped

Now _that_ I can read!

-- 
Cheers,
Leif



More information about the Python-ideas mailing list