Ответ 1
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
для примера min()
ниже? (Держу пари, у него есть твердая причина, чтобы он ничего не возвращал, но в моем конкретном случае мне нужно, чтобы игнорировать значения None
очень плохо!)
>>> max([None, 1,2])
2
>>> min([None, 1,2])
>>>
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
с использованием выражения генератора:
>>> 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
Сделайте 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.