Рубрики
Без рубрики

Python // Оператор – Дивизион на основе пола

Оператор // в Python 3 используется для выполнения дивизии на основе пола.

Автор оригинала: Pankaj Kumar.

Python//Оператор – Дивизион на основе пола

// Оператор в Python 3 используется для выполнения дивизии на основе пола.

Это означает, что A//B Сначала разделяет A by b и получает целочисленное значение, сбрасывая оставшуюся часть. Это означает, что результат A//B всегда целое число.

Python//Примеры оператора

Вот несколько примеров, чтобы проиллюстрировать то же самое:

>>> 2 // 3
0
>>> 1.3 // 2
0.0
>>> 1.3 // 1.0
1.0
>>> 3.4 // 1.1
3.0
>>> 3.4 // 1.2
2.0
>>> -1//2
-1
>>> -6 // 2
-3
>>> -6 // -3
2

Это показывает, как // Оператор выполняет отдел на основе пола, с учетом целой части дивизии, даже для количества плавающих точек.

Выполнение этой операции на неподдерживаемых типах (например, списки и строки), приведет к Типеррор , как одинаково для любого другого арифметического оператора.

Перегрузка оператора//

// относится к __flooordiv __ () Оператор по умолчанию, так что вы можете выполнить Перегрузка оператора Переопределяя этот метод ( Оператор .__ Флордов __ (A, B) )

Вот пример, который перегружает // Способ для целочисленных списков, имеющих ту же длину, выполняя индивидуальное разделение на основе пола на каждой паре элементов.

Итак, два целочисленных списка [3, 4, 5] и [2, 2, 1] даст [3//2, 4//2, 5//1] , который просто список [1, 2, 5] Отказ

import operator

class MyClass():
    def __init__(self, a):
        self.a = a

    def __floordiv__(self, b):
        if isinstance(self.a, list) and isinstance(b.a, list) and len(self.a) == len(b.a):
            result = []
            # Overload // operator for Integer lists
            for i, j in zip(self.a, b.a):
                result.append(i // j)
            return result
        else:
            # Perform Default // operation otherwise
            return operator.__floordiv__(self.a, b.a)

m = MyClass([3, 4, 5])
n = MyClass([2, 2, 1])

print(m // n)

Выход

[1, 2, 5]

Заключение

В этой статье мы узнали о // Оператор дивизии пола. Мы также узнали о выполнении оператора перегрузки на это, реализуя Оператор .__ Флордов __ (A, B) Отказ

использованная литература