[Pythonmac-SIG] algorithm wanted

eichin at metacarta.com eichin at metacarta.com
Tue Feb 1 16:46:24 CET 2005


It's certainly one of the things map+lambda are for

>>> "".join(map(lambda x,y: {True:x, False:"0"}[y], _cmykMap, [True, False, True, True]))
'C0YK'

but I'd break that down into a selector function (rather than a
lambda) or something to make it readable, since it's way too far on
the lisp side of things as far as expressiveness goes.

The code you have isn't actually unclear, so consider *why* you want
to make it compact.  You could also work with for and zip:

>>> def flagmap(tag, flag):
...   if flag: return tag
...   return "0"
... 
>>> [flagmap(tag, flag) for tag, flag in zip(_cmykMap, [True, False, True, True])]
['C', '0', 'Y', 'K']

(add "".join or string.join as appropriate.)

What I don't see is why you have ProcessColors as a class, but I'm
assuming there's context for that -- these converter functions are
just that, functions, though I could see having a color object that
also called them as methods, the idea of using a method of a color
object to convert another color word in a way that has nothing to do
with the color object itself seems an odd use of the object.


More information about the Pythonmac-SIG mailing list