Newbie question about tuples and list comprehensions

idiolect boingy.boingy at gmail.com
Wed Jun 25 17:37:41 EDT 2008


Hi all - Sorry to plague you with another newbie question from a
lurker.  Hopefully, this will be simple.

I have a list full of RGB pixel values read from an image.  I want to
test each RGB band value per pixel, and set it to something else if it
meets or falls below a certain threshold - i.e., a Red value of 0
would be changed to 50.

I've built my list by using a Python Image Library statement akin to
the following:

data = list(image.getdata())

Which produces a very long list that looks like [(0,150,175),
(50,175,225),...].  I'm trying to figure out a fast and pythonic way
to perform my operation.  The closest I've come so far to a succinct
statement is a list comprehension along the syntax of:

source = [((x,y,z),(x+50,y+50,z+50))[bool(x or y or z < 50)] for
(x,y,z) in source]

...which kind of approaches the effect I'm looking for, but it doesn't
really test and change each value in the tuple individually.  My
understanding of the things you can do with lists and python in
general is rather naive, so I would appreciate any insight anyone can
offer since I am not sure if I'm even headed down the correct path
with list comprehensions.

Much obliged!



More information about the Python-list mailing list