list comprehension

Bruno Desthuilliers onurb at xiludom.gro
Fri Jun 30 09:11:58 EDT 2006


Andy Dingley <dingbat at codesmiths.com> wrote:
> Simon Forman wrote:
> 
> 
>>There's more to it, but that's the basic idea.
> 
> 
> This much I knew, but _why_ and _when_ would I choose to use list
> comprehension (for good Python style), rather than using a simple
> "traditional" loop ?

Whenever it's more readable.

> If I want to generate something that's simply ( [1] + [2] + [3]+... )
> then list comprehension is obviously the tool of choice. I suspect
> though that there's more to it than this. Is list comprehension also
> treatable as a sneaky concise formulation for nested lists, where
> they're as much about selection of individual elements, so much as
> concatenation of the sequence?

I've read this last sentence three times now and I'm still not sure to
grasp it - hopefully it's friday...

Care to give an example ?

> What happens if a comprehension has side effects, such as from calling
> a function within it? Is this regarded as good or bad coding style? Is
> it evil (as structured programming would claim) or is it  a concise
> formulation for an iterator or visitor pattern ?

I'd say it's bad style to call a function having side effects from
within a list comp. List comps have a very declarative/functional style,
 while side effects are clearly on the imperative side. I never took
time to think about this, but IIRC I've never used list comp that way -
I then use a for loop.


-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'onurb at xiludom.gro'.split('@')])"



More information about the Python-list mailing list