first of not None
Diez B. Roggisch
deets at nospam.web.de
Thu Oct 9 03:34:14 EDT 2008
Serge Matveenko schrieb:
> On 10/9/08, Serge Matveenko <serge at matveenko.ru> wrote:
>> I need to put in the var property of the first object from the list
>> that is not None. Somth like:
>>
>> foo = first_of([any, beny, riki,]).name
>>
>> Dont want to ugly if-cascade:
>>
>> foo = any.name if name is not None else beny.name if beny is not None \
>> else riki.name if riki is not None
>
> after some play with interpreter and Python logic i've got this:
>
> objs = [None, 'dfgh', None,]
> obj_l = [obj.__len__() for obj in objs if obj is not None][0]
The usual way to compute the len is to use
len(obj)
> Now the question is this is lazy or not? And how could i make it lazy?
No, it's not. You could make it a generator expression:
obj_l = (len(obj) for obj in objs if obj is not None).next()
Diez
More information about the Python-list
mailing list