List minimum in Python with None?

巧了我就是萌 提交于 2019-12-03 04:45:00

None is being returned

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

If you want to return 1 you have to filter the None away:

>>> L = [None, 1, 2]
>>> min(x for x in L if x is not None)
1

using a generator expression:

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

eventually, you may use filter:

>>> min(filter(lambda x: x is not None, [None,1,2]))
1

Make None infinite for min():

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

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

Note: this approach works for python 3 as well.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!