(с использованием Python 3.1)
Я знаю, что этот вопрос задавался много раз для общего вопроса тестирования, если итератор пуст; очевидно, нет точного решения этого (я думаю, по причине - итератор действительно не знает, пуст ли он, пока его не попросят вернуть его следующее значение).
Однако у меня есть конкретный пример, и я надеялся, что смогу сделать из него чистый и Pythonic-код:
#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)
Есть ли лучший способ сделать это?
РЕДАКТИРОВАТЬ: извините за глупые обозначения. Параметр функции действительно является произвольной итерацией, а не списком.