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