eb303 a écrit :
On Apr 19, 2:20 pm, AlienBaby <matt.j.war...@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]

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to