Elenco minimo in Python con nessuno?
-
21-09-2019 - |
Domanda
C'è qualche intelligente funzione in-built o qualcosa che restituirà 1
per l'esempio min()
qui sotto? (Scommetto che c'è una ragione solida per non tornare nulla, ma nel mio caso particolare ho bisogno di ignorare i valori None
davvero male!)
>>> max([None, 1,2])
2
>>> min([None, 1,2])
>>>
Soluzione
None
viene riconsegnato
>>> print min([None, 1,2])
None
>>> None < 1
True
Se si desidera tornare 1
bisogna filtrare la None
via:
>>> L = [None, 1, 2]
>>> min(x for x in L if x is not None)
1
Altri suggerimenti
utilizzando un generatore di espressione:
>>> min(value for value in [None,1,2] if value is not None)
1
alla fine, è possibile utilizzare il filtro:
>>> min(filter(lambda x: x is not None, [None,1,2]))
1
Fai Nessuno infinito per min ():
def noneIsInfinite(value):
if value is None:
return float("inf")
else:
return value
>>> print min([1,2,None], key=noneIsInfinite)
1
Nota: questo approccio funziona per Python 3 pure.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow