#python #c# #compare #compareto
Вопрос:
Насколько я знаю, в .NET Framework есть метод Int32.compareTo(), который возвращает 0, если числа равны, -1, если число в скобках больше, в противном случае 1. Существует ли для этого существующий метод на python с теми же возвращаемыми значениями, или я должен написать его сам?
Комментарии:
1. На самом деле
Int32.CompareTo
не гарантируется возврат значения, которое в точности равно-1
или1
в соответствующих случаях, гарантируется только тот факт, что оно больше или меньше нуля.2.
NumPy.sign()
может использоваться:numpy.sign(v1 - v2)
.
Ответ №1:
Возможно, в какой-то загадочной сторонней библиотеке, но нет, в «ванильном» Python 3.x нет способа сделать это, хотя код для достижения чего-то подобного должен быть таким же простым, как этот:
def compare_to(val1: int, val2: int) -> int:
if val1 > val2:
return 1
elif val1 < val2:
return -1
elif val1 == val2:
return 0
Или для чего-то более близкого к тому, что вы описали, используя пользовательский подкласс int
:
class Int32(int):
def compare_to(value: int) -> int:
if self > value:
return 1
elif self < value:
return -1
elif self == value:
return 0
Комментарии:
1. В итоге я подал в суд на что-то вроде первого фрагмента, спасибо за помощь.