Prev: Tkinter scrollbar background color doesn't work
Next: copy some files from IE temporary internet files
From: AlienBaby on 19 Apr 2010 08:20 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.
From: eb303 on 19 Apr 2010 08:23 On Apr 19, 2:20 pm, AlienBaby <matt.j.war...(a)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] HTH - Eric -
From: AlienBaby on 19 Apr 2010 08:26 On Apr 19, 1:23 pm, eb303 <eric.brunel.pragma...(a)gmail.com> wrote: > On Apr 19, 2:20 pm, AlienBaby <matt.j.war...(a)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] > > HTH > - Eric -- Hide quoted text - > > - Show quoted text - Ahh. Gotcha, thankyou :)
From: Bruno Desthuilliers on 19 Apr 2010 09:20
eb303 a �crit : > On Apr 19, 2:20 pm, AlienBaby <matt.j.war...(a)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] |