ptmcg at austin.rr.com
Sat Mar 1 04:14:44 CET 2008
On Feb 29, 5:57 pm, Alan Isaac <ais... at american.edu> wrote:
> Paul McGuire wrote:
> > In general, whenever you have:
> > someNewList = 
> > for smthg in someSequence:
> > if condition(smthg):
> > someNewList.append( elementDerivedFrom(smthg) )
> > replace it with:
> > someNewList = [ elementDerivedFrom(smthg)
> > for smthg in someSequence
> > if condition(smthg) ]
> What is the gain? (Real question.)
> I think the first is often easier to read.
> Is the second more efficient?
> Also, I think list comprehensions are often easier to read
> as equivalent generator expressions:
> someNewList = list( elementDerivedFrom(smthg)
> for smthg in someSequence
> if condition(smthg) )
> Tastes vary of course.
> Alan Isaac
I think there is a performance gain in list comps over explicit for
looping - I'm sure google will turn up some stats for this in this
newsgroup in the past.
As for list(<generator-expr>) over [<list-comprehnesion>], that's why
they make chocolate and vanilla. (I believe that at one time, Guido
was considering discarding list comps in Py3K, with this list
+generator expression alternative being the rationale for dropping
them, but later changed his mind.)
More information about the Python-list