[Tutor] list comprehensions
Kent Johnson
kent37 at tds.net
Fri Oct 9 13:57:14 CEST 2009
On Fri, Oct 9, 2009 at 1:21 AM, wesley chun <wescpy at gmail.com> wrote:
> [generator expressions] are
> "lazy" because you iterate over the values one at a time instead of
> creating the entire list. they are slightly slower but save memory.
I don't think you can make a blanket statement comparing speed of list
comp vs genexp. For example:
kent $ py -m timeit 'sum(x for x in xrange(1,1000) if x%3==0 or x%5==0)'
1000 loops, best of 3: 295 usec per loop
kent $ py -m timeit 'sum([x for x in xrange(1,1000) if x%3==0 or x%5==0])'
1000 loops, best of 3: 281 usec per loop
Here list comp is a bit faster.
kent $ py -m timeit 'sum(x for x in xrange(1,10000) if x%3==0 or x%5==0)'
100 loops, best of 3: 2.83 msec per loop
kent $ py -m timeit 'sum([x for x in xrange(1,10000) if x%3==0 or x%5==0])'
100 loops, best of 3: 2.85 msec per loop
Here they are neck and neck.
kent $ py -m timeit 'sum(x for x in xrange(1,100000) if x%3==0 or x%5==0)'
10 loops, best of 3: 28.9 msec per loop
kent $ py -m timeit 'sum([x for x in xrange(1,100000) if x%3==0 or x%5==0])'
10 loops, best of 3: 29.4 msec per loop
genexp pulls in to the lead.
Kent
More information about the Tutor
mailing list