FAQ
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.

Search Discussions

  • Eb303 at Apr 19, 2010 at 12:23 pm

    On Apr 19, 2:20?pm, AlienBaby 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]

    HTH
    - Eric -
  • AlienBaby at Apr 19, 2010 at 12:26 pm

    On Apr 19, 1:23?pm, eb303 wrote:
    On Apr 19, 2:20?pm, AlienBaby 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]

    HTH
    ?- Eric -- Hide quoted text -

    - Show quoted text -
    Ahh. Gotcha, thankyou :)
  • Bruno Desthuilliers at Apr 19, 2010 at 1:20 pm

    eb303 a ?crit :
    On Apr 19, 2:20 pm, AlienBaby 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]

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppython-list @
categoriespython
postedApr 19, '10 at 12:20p
activeApr 19, '10 at 1:20p
posts4
users3
websitepython.org

People

Translate

site design / logo © 2022 Grokbase