列出Python中的最小值为None?

c00*_*ter 22 python list max minimum python-2.x

是否有任何聪明的内置功能或某些东西将返回下面1min()示例?(我打赌它有一个坚实的理由,它不会返回任何东西,但在我的特殊情况下,我需要它来忽视None价值真的很糟糕!)

>>> max([None, 1,2])
2
>>> min([None, 1,2])
>>> 
Run Code Online (Sandbox Code Playgroud)

nos*_*klo 42

None 正在退货

>>> print min([None, 1,2])
None
>>> None < 1
True
Run Code Online (Sandbox Code Playgroud)

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

>>> L = [None, 1, 2]
>>> min(x for x in L if x is not None)
1
Run Code Online (Sandbox Code Playgroud)

  • 请注意,"None"仅在Python 2中返回.在Python 3中,`min([None,1,2])`在'int'和'NoneType'的实例之间不支持`TypeError:'<'. (8认同)

Adr*_*son 5

使用生成器表达式:

>>> min(value for value in [None,1,2] if value is not None)
1
Run Code Online (Sandbox Code Playgroud)

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

>>> min(filter(lambda x: x is not None, [None,1,2]))
1
Run Code Online (Sandbox Code Playgroud)

  • 语法没有python 3。它在python 2中工作得很好。使用 `is` 与 `None` 进行比较,因为在 `value is not None` 中比使用 `==`(或 `!=`)更受欢迎。`filter` 行是**错误的**,尝试在列表中放一个 0,你会看到它也会被过滤,这不是你想要的。 (3认同)