else condition in list comprehension

Steve Holden steve at holdenweb.com
Wed Jan 12 18:36:46 EST 2005


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"? ;-)

regards
  Steve
-- 
Steve Holden               http://www.holdenweb.com/
Python Web Programming  http://pydish.holdenweb.com/
Holden Web LLC      +1 703 861 4237  +1 800 494 3119



More information about the Python-list mailing list