>>py> [x for x in '1234' if x%2 else 'even'] >>[1, 'even', 3, 'even'] >> >>I'm guessing this has been suggested before? > > > You could (in 2.5) use: > > [(x if x%2 else 'even') for x in '1234']
This failed on multiple levels in 2.3.5 (the "if" syntax is unrecognized, and trying the below with '1234' rather than [1,2,3,4] choked) Haven't played with 2.5 yet, so this might be a good way to go if you've got it. However, this worked in my 2.3.5: [((x%2 == 0 and 'even') or x) for x in [-2,-1,0,1,2,3,4]] It uses the fairly defacto short-circuit-evaluation usage to coin a Python trinary operator like the C/C++ colon/question-mark pair of operators. There is a caveat (that can be coded around, IIRC, but don't have it at the tip of my fingers) that inverting the logic can cause trouble when x==0 as in [((x%2 == 0 and x) or 'odd') for x in [-2,-1,0,1,2,3,4]] which doesn't quite produce the desired results. [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list