Liste minimale en Python avec Aucun?
-
21-09-2019 - |
Question
Y at-il des fonctions intelligentes en construction ou quelque chose qui va revenir 1
pour l'exemple ci-dessous min()
? (Je parie qu'il ya une raison solide pour qu'il ne retourne rien, mais dans mon cas particulier, je dois à ne pas tenir compte des valeurs de None
vraiment mauvais!)
>>> max([None, 1,2])
2
>>> min([None, 1,2])
>>>
La solution
None
est retourné
>>> print min([None, 1,2])
None
>>> None < 1
True
Si vous voulez revenir 1
vous devez filtrer loin le None
:
>>> L = [None, 1, 2]
>>> min(x for x in L if x is not None)
1
Autres conseils
en utilisant une expression de la génératrice:
>>> min(value for value in [None,1,2] if value is not None)
1
éventuellement, vous pouvez utiliser le filtre:
>>> min(filter(lambda x: x is not None, [None,1,2]))
1
Faire Aucun infinie min ():
def noneIsInfinite(value):
if value is None:
return float("inf")
else:
return value
>>> print min([1,2,None], key=noneIsInfinite)
1
Remarque: cette approche fonctionne pour python 3 aussi bien.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow