Python // operator – Floor Based Division

The // operator in Python 3 is used to perform floor-based division.

This means that a // b first divides a by b and gets the integer quotient, while discarding the remainder. This means that the result of a//b is always an integer.

Python // Operator Examples

Here are a few examples to illustrate the same:

>>> 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

This shows how the // operator performs the floor based division, by only considering the integer part of the division, even for floating-point numbers.

Performing this operation on unsupported types (like lists and strings), will result in a TypeError, as is the same for any other arithmetic operator.


Overloading the // Operator

// refers to the __floordiv__() operator by default, so you can perform operator overloading by overriding this method (operator.__floordiv__(a, b))

Here is an example that overloads the // method for integer lists having the same length, by performing individual floor-based division on every pair of elements.

So the two integer lists [3, 4, 5] and [2, 2, 1] will give [3//2, 4//2, 5//1], which is simply the list [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)

Output

[1, 2, 5]

Conclusion

In this article, we learned about the // floor division operator. We also learned about performing operator overloading on this by implementing operator.__floordiv__(a, b).

References

Vijaykrishna Ram
Articles: 102
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy