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