Luis M. Gonzalez wrote:
Hi there,

I'd like to know if there is a way to add and else condition into a
list comprehension. I'm sure that I read somewhere an easy way to do
it, but I forgot it and now I can't find it...

for example:
z=[i+2 for i in range(10) if i%2==0]
what if I want i to be "i-2" if i%2 is not equal to 0?

You could use

[(i-2, i+2)[bool(i%2 == 0)] for i in range(10)]

or, in a less general but shorter way

[(i+2, i-2)[i%2] for i in range(10)]

or even

[i%2 and i-2 or i+2 for i in range(10)]

The "if" clause in comprehensions is used as a filter condition.

--
Ciao,
Matteo
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to