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])
>>> 
Était-ce utile?

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
scroll top