Luis M. Gonzalez wrote:
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

Reply via email to