When is List Comprehension inappropriate?
Duncan Booth
duncan.booth at invalid.invalid
Mon Mar 19 15:24:48 EDT 2007
"Ben" <bensherman at gmail.com> wrote:
> What's the most "pythony" way to do this:
>
> even = []
> for x in range(0,width,2):
> for y in range(0,height,2):
> color = im.getpixel((x,y))
> even.append(((x,y), color))
>
> versus list comprehension:
>
> even2 = [((x,y), im.getpixel((x,y))) for x in range(0,width,2) for y
> in range(0,height,2)]
>
...
>
> Feel free to tell me a different way to do this, as well.
>
Untested code, but I would try to avoid calling getpixel:
data = list(im.getdata())
width, height = im.size
even = [ data[i:i+width:2] for i in range(0, width*height, 2*width)]
That creates a 2 dimensional list rather than one long list, and doesn't
create the x,y tuples, but since they are implied by the position in the
list I don't actually see why you would want to create them at all. You can
calculate them separately if you actually need them.
More information about the Python-list
mailing list