31

是否有任何聪明的内置函数或将返回1以下min()示例的内容?(我敢打赌它不返回任何东西是有充分理由的,但在我的特殊情况下,我需要它来忽略None非常糟糕的值!)

>>> max([None, 1,2])
2
>>> min([None, 1,2])
>>> 
4

3 回答 3

50

None正在被退回

>>> print min([None, 1,2])
None
>>> None < 1
True

如果要返回1,则必须过滤None掉:

>>> L = [None, 1, 2]
>>> min(x for x in L if x is not None)
1
于 2010-02-19T10:16:54.240 回答
5

使用生成器表达式:

>>> min(value for value in [None,1,2] if value is not None)
1

最终,您可以使用过滤器:

>>> min(filter(lambda x: x is not None, [None,1,2]))
1
于 2010-02-19T10:18:50.093 回答
2

使 min() 的 None 无限:

def noneIsInfinite(value):
    if value is None:
        return float("inf")
    else:
        return value

>>> print min([1,2,None], key=noneIsInfinite)
1

注意:这种方法也适用于 python 3。

于 2019-06-30T17:38:06.697 回答