Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

What does the &= operator do in the python set() class

Here is the getImgIds from the pycocotools:

pycocotools/coco.py:

def getImgIds(self, imgIds=[], catIds=[]):
    '''
    Get img ids that satisfy given filter conditions.
    :param imgIds (int array) : get imgs for given ids
    :param catIds (int array) : get imgs with all given cats
    :return: ids (int array)  : integer array of img ids
    '''
    imgIds = imgIds if _isArrayLike(imgIds) else [imgIds]
    catIds = catIds if _isArrayLike(catIds) else [catIds]

    if len(imgIds) == len(catIds) == 0:
        ids = self.imgs.keys()
    else:
        ids = set(imgIds)
        for i, catId in enumerate(catIds):
            if i == 0 and len(ids) == 0:
                ids = set(self.catToImgs[catId])
            else:
                ids &= set(self.catToImgs[catId])
    return list(ids)

Here is the test code for simulating the value of ids &= set(self.catToImgs[catId]):

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

fruits = set(['apple', 'banana', 'cherry'])
cars = set(['Ford', 'BMW', 'Volvo'])
fruits &= cars
print("fruits: len:{}, type: {}, values: {}".format(
    len(fruits), type(fruits), fruits
))

Here is the result:

fruits: len:0, type: <class 'set'>, values: set()

I got a result of len = 0.

How to understand the meaning of the above &= operator for the set() class?

>Solution :

This might be useful : https://python-reference.readthedocs.io/en/latest/docs/sets/op_intersection.html

In other words, & is the "bitwise and" operator. With the syntax &=, you have a &= b that is equivalent to a = a & b. For sets, it is the intersection of the two sets (as explained in the documentation linked above).

If no elements are common in both sets, it will return an empty set.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading