Is / else / if possible in a list comprehension?
I would like to know if it is possible to use a list comprehension with
that does not have to contain a list of the same length as the length of the list being processed? (i.e. no final
>>> L = [0, 1, 2, 3, 4, 5, 6] >>> [v * 10 if v < 3 else v * 2 if v > 3 else v for v in L] [ ]
works great. But suppose I want to omit 3 to get:
I would have thought this would work:
>>> [v * 10 if v < 3 else v * 2 if v > 3 for v in L]
But this is a syntax error.
So I thought that "maybe" it would work:
>>> [v * 10 if v < 3 else v * 2 if v > 3 else pass for v in L]
But this is not the case.
This is a matter of curiosity, I realize this is not necessarily the most readable / appropriate approach to the above processing.
Am I missing something? It can be done? (I'm on python 2.6.5)
source to share