在Python中如何处理包含None的最小值?
有没有什么聪明的内置函数或者其他方法,可以让下面这个 min()
的例子返回 1
呢?(我敢打赌不返回任何东西是有充分理由的,但在我这个特定的情况下,我真的很需要它忽略 None
的值!)
>>> max([None, 1,2])
2
>>> min([None, 1,2])
>>>
3 个回答
4
让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中也适用。
9
使用生成器表达式:
>>> 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
55
返回的是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