Как я могу сравнивать целые числа в python так же, как это делает compareTo() в C#?

#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. В итоге я подал в суд на что-то вроде первого фрагмента, спасибо за помощь.