列出Python中的最小值为None?

时间:2010-02-19 10:14:41

标签: python list max minimum

是否有任何聪明的内置函数或某些内容会为下面的1示例返回min()? (我敢打赌,有一个坚实的理由不返回任何东西,但在我的特殊情况下,我需要它忽略None值非常糟糕!)

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

3 个答案:

答案 0 :(得分:39)

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

答案 1 :(得分:3)

使用生成器表达式:

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

答案 2 :(得分:0)

使min()无穷大:

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

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

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