shouldn't list comprehension be faster than for loops?

Alf P. Steinbach alfps at start.no
Thu Dec 17 12:42:22 EST 2009


* Carlos Grohmann:
> Hello all
> 
> I am testing my code with list comprehensions against for loops.
> 
> the loop:
> 
>     dipList=[float(val[1]) for val in datalist]
>     dip1=[]
>     for dp in dipList:
>         if dp == 90:
>             dip1.append(dp - 0.01)
>         else:
>             dip1.append(dp)
> 
> listcomp:
> 
>     dipList=[float(val[1]) for val in datalist]
>     dip1=[(dp, dp-0.01)[dp==90.0] for dp in dipList]
> 
> 
> Tenting the time spent by each approach (using time.clock()), with a
> file with about 100,000 entries, I get 0.03s for the loop and 0.05s
> for the listcomp.
> 
> thoughts?

In the list comprehension you're constructing n tuples that you're not 
constructing in the loop.

Have you tried this with

   dip1 = [dp - 0.01 if dp == 90 else dp for dp in dipList]

?


Cheers & hth.,

- Alf



More information about the Python-list mailing list