(Using Python 3.1)
I know this question has been asked many times for the general question of testing if iterator is empty; obviously, there's no neat solution to that (I guess for a reason - an iterator doesn't really know if it's empty until it's asked to return its next value).
I have a specific example, however, and was hoping I can make clean and Pythonic code out of it:
#lst is an arbitrary iterable
#f must return the smallest non-zero element, or return None if empty
def f(lst):
flt = filter(lambda x : x is not None and x != 0, lst)
if # somehow check that flt is empty
return None
return min(flt)
Is there any better way to do that?
EDIT: sorry for the stupid notation. The parameter to the function is indeed an arbitrary iterable, rather than a list.