else condition in list comprehension

Andrey Tatarinov elephantum at dezcom.mephi.ru
Thu Jan 13 04:25:00 EST 2005


Steve Holden wrote:
> Nick Coghlan 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 to be "i-2" if i%2 is not equal to 0?
>>>
>>
>> Hmm:
>>
>> z = [newval(i) for i in range(10)] using:
>>     def newval(x):
>>         if x % 2:
>>             return x - 2
>>         else:
>>             return x + 2
>>
>> Just some more mental twiddling relating to the thread on statement 
>> local namespaces.
>>
> I presume the point of this is to avoid polluting the local namespace 
> with "newval". I further presume you also have plans to do something 
> about "i"? ;-)

no, the point is in grouping definition of newval() with place where it 
is used.



More information about the Python-list mailing list