Похоже, вы можете использовать функцию min / max с key=
и настраиваемым объектом сравнения, который обрабатывает None
специально:
class Predicate:
def __init__(self, item):
self.item = item
def __lt__(self, other):
try:
return self.item < other.item
except TypeError:
return False
print(min([0, 1, 2, None, 3, 4], key=Predicate))
print(min([None], key=Predicate))
print(max([0, 1, 2, 3, None, 4, 5], key=Predicate))
print(max([None], key=Predicate))
Вывод:
0
None
5
None
0
Do у вас есть еще несколько примеров или тестов относительно ожидаемых результатов?