default value in list comprehension

Bruno Desthuilliers bruno.42.desthuilliers at websiteburo.invalid
Mon Apr 19 15:20:25 CEST 2010


eb303 a écrit :
> On Apr 19, 2:20 pm, AlienBaby <matt.j.war... at gmail.com> wrote:
>> Hi,
>>
>> just a quick one,
>>
>> Is it possible to achieve a default value in a list comprehension
>> where the if-clause is false?
>>
>> Ie, something similar to:
>>
>> [ a for a in b if something(a) else 'default' ]
>>
>> the idea being that, rather than skip a value if the if-clause is
>> false, to place a default value at that position in the returned list
>> instead.
>>
>> ?
>>
>> Thanks,
>>
>> Matt.
> 
> [a if something(a) else 'default' for a in b]

Or you could have "something" taking a "default" argument and returning 
either it's argument (instead of True) or the "default" one (instead of 
False), and get rid of the if/else test in the list comp, ie:

def something(obj, default=False):
     if whatever(obj):
        return obj
     else:
        return default

results = [something(a, default="default") for a in b]




More information about the Python-list mailing list