This should be trivial:

I am looking to extract the first non-None element in a list, and
"None" otherwise.  Here's one implementation:

>>> x = reduce(lambda x,y: x or y, [None,None,1,None,2,None], None)
>>> print x
1

I thought maybe a generator expression would be better, to prevent
iterating over the whole list:

>>> x = ( x for x in [None,1,2] if x is not None ).next()
>>> print x
1

However, the generator expression throws if the list is entirely None.

With list comprehensions, a solution is:

>>> x = ([ x for x in [None,1,2] if x is not None ] + [ None ] )[0]

But this can be expensive memory wise.  Is there a way to concatenate
generator expressions?

More importantly,

Is there a better way?  (In one line?)

Thanks,

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

Reply via email to