It's me wrote:z = [i + (2, -2)[i % 2] for i in range(10)]
But then why would you want to use such feature? Wouldn't that make the code much harder to understand then simply:
z=[] for i in range(10): if i%2: z.append(i-2) else: z.append(i+2)
Or are we trying to write a book on "Puzzles in Python"?
Once you get used to list comprehensions (and it doesn't take long), they are a more concise and compact way to express these operations.
After looking the two suggestions over a couple of times, I'm still undecided as to which one is more readable for me. The problem is not the list comprehensions (which I love and use extensively). The problem is the odd syntax that has to be used for an if/then/else expression in Python. I think I would have less trouble reading something like:
z = [i + (if i % 2 then -2 else 2) for i in range(10)]
but, of course, adding a if/then/else expression to Python is unlikely to ever happen -- see the rejected PEP 308[1].
Steve
[1] http://www.python.org/peps/pep-0308.html -- http://mail.python.org/mailman/listinfo/python-list