List comprehensions' ugliness (Was: Re: How to explain exactly what "def" does?)
aleax at aleax.it
Thu Feb 6 01:25:41 CET 2003
Hans Nowak wrote:
> [mylist.append(z) for z in otherlist]
> The point of list comprehensions is to return a list, and the example
> doesn't do anything with that list. It's better written as
> for z in otherlist:
mylist.extend(otherlist) is better.
> I'm sure there are better (worse?) examples of list comp abuse.
Sure, such as faking assign-and-test:
while [x for x in [<expression>] if x]:
since you cannot do:
I think this is the iffiest/ugliest of the possibly-handy uses of LCs --
it's not very clear AND relies on the sad fact that the bindings in
a LCs' for clauses "leak" to the surrounding scope (a LC doesn't
have its own scope "nested" in the surrounding one).
More information about the Python-list