(avec Python 3.1)filtre Python/combo max - pour vérifier iterator vide
Je sais que cette question a été posée à plusieurs reprises la question générale des tests si iterator est vide; évidemment, il n'y a pas de bonne solution à cela (je suppose pour une raison - un itérateur ne sait pas vraiment s'il est vide jusqu'à ce qu'on lui demande de retourner sa prochaine valeur).
J'ai un exemple précis, cependant, et espérait que je peux faire un code propre et Pythonic sortir:
#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)
Y at-il une meilleure façon de le faire?
EDIT: désolé pour la notation stupide. Le paramètre de la fonction est en effet un itérable arbitraire, plutôt qu'une liste.
Utilisez-vous Python 3? –
Oui. ActiveState Python 3.1.2. – max
'itertools.c_c_c_c_c_COMBO_BREAKER()' –