else condition in list comprehension

Nick Coghlan ncoghlan at iinet.net.au
Tue Jan 11 08:04:50 EST 2005


Dan Bishop wrote:
> 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 [sic] to be "i-2" if i%2 is not equal to 0?
> 
> 
> z = [i + (2, -2)[i % 2] for i in range(10)]

For the specific case of +/- a number, (-1) ** x works, too:

z = [i + 2 * ((-1) ** i) for i in range(10)]

Not that I'm claiming it's particularly readable or anything. . . just that it 
works :)

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at email.com   |   Brisbane, Australia
---------------------------------------------------------------
             http://boredomandlaziness.skystorm.net



More information about the Python-list mailing list