Список минимум в Python с None? - PullRequest
21 голосов
/ 19 февраля 2010

Есть ли какая-нибудь умная встроенная функция или что-то, что вернет 1 для примера min() ниже?(Могу поспорить, что для этого есть веская причина не возвращать что-либо, но в моем конкретном случае мне нужно игнорировать None значения очень плохо!)

Ответы [ 3 ]

41 голосов
/ 19 февраля 2010

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
3 голосов
/ 19 февраля 2010

с использованием выражения генератора:

>>> 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
0 голосов
/ 30 июня 2019

Сделать None бесконечным в течение min ():

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

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

Примечание: этот подход работает и для Python 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...