[Tutor] list comprehension problem

Chris Fuller cfuller084 at thinkingplanet.net
Fri Jul 3 22:59:46 CEST 2009


On Friday 03 July 2009 15:37, Emile van Sebille wrote:
> On 7/3/2009 1:21 PM Kent Johnson said...
>
> > On Fri, Jul 3, 2009 at 3:49 PM, Dinesh B
> >
> > Vadhia<dineshbvadhia at hotmail.com> wrote:
> >> d = [0, 8, 4, 4, 4, 7, 2, 5, 1, 1, 5, 11, 11, 1, 6, 3, 5, 6, 11, 1]
> >>
> >> and we want:
> >>
> >> [0, 8, 12, 16, 20, 27, 29, 34, 35, 36, 41, 52, 63, 64, 70, 73, 78, 84,
> >> 95, 96]
> >> dd = [ sum(d[:j]) for j in range(len(d)) ][1:]
> >>
> >> gives:
> >>
> >> [0, 8, 12, 16, 20, 27, 29, 34, 35, 36, 41, 52, 63, 64, 70, 73, 78, 84,
> >> 95]
> >
> > In [9]: [ sum(d[:j+1]) for j in range(len(d)) ]
> > Out[9]: [0, 8, 12, 16, 20, 27, 29, 34, 35, 36, 41, 52, 63, 64, 70, 73,
> > 78, 84, 95, 96]
>
> So, did we get an 'A'...
>
> Emile
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor

The problem with these list comprehensions is that they have O(n**2) 
complexity.  Whether they are faster or not depends on the speedup from the 
list comprehension and the length of the input.  I'd be inclined to favor the 
linear for loop.

Cheers


More information about the Tutor mailing list