How to Check if a Set is Empty in Python( with Example Code)

Checking if a set is empty in Python can be done in O(1) time complexity and O(1) space complexity using three methods. First, the len() function can be used to check the length of the set, with len(my_set) == 0 indicating an empty set. Second, the set can be directly compared to an empty set using my_set == set(). Third, the not operator can be used, with not my_set evaluating to True for an empty set. Python sets are implemented as hash tables under the hood, providing an average case time complexity of O(1) for membership tests, insertions, and deletions. This makes checking if a set is empty a highly efficient operation in Python.

check if set is empty python

Using the len() Function

The len() function returns the number of elements in a set. If the set is empty, len() will return 0. Here’s an example:

my_set = set()  # Creating an empty set

if len(my_set) == 0:
    print("The set is empty.")
else:
    print("The set is not empty.")

Output:

The set is empty.

Using the bool() Function

The bool() function returns True if the set is non-empty, and False if the set is empty. Here’s an example:

my_set = {1, 2, 3}  # Creating a non-empty set

if bool(my_set):
    print("The set is not empty.")
else:
    print("The set is empty.")

Output:

The set is not empty.

Using the not Operator

You can also use the not operator to check if a set is empty. If the set is empty, not my_set will evaluate to True. Here’s an example:

my_set = set()  # Creating an empty set

if not my_set:
    print("The set is empty.")
else:
    print("The set is not empty.")

Output:

The set is empty.

Checking the Length of a Set Directly

You can also check the length of a set directly without using an if statement:

my_set = {1, 2, 3}  # Creating a non-empty set
is_empty = len(my_set) == 0
print(f"Is the set empty? {is_empty}")

Output:

Is the set empty? False

Checking the Intersection of Two Sets

The provided answer shows how to check if the intersection of two sets is empty:

def myfunc(a, b):
    c = a.intersection(b)
    return bool(c)

In this example, myfunc takes two sets a and b as arguments. It calculates the intersection of these two sets using the intersection() method and stores the result in c. Finally, it returns True if c is non-empty (using the bool() function), and False if c is empty.

Here’s an example usage:

set1 = {1, 2, 3}
set2 = {2, 3, 4}
set3 = {5, 6}

print(myfunc(set1, set2))  # Output: True
print(myfunc(set1, set3))  # Output: False

In the first call to myfunc, the intersection of set1 and set2 is {2, 3}, which is non-empty, so True is printed. In the second call, the intersection of set1 and set3 is an empty set, so False is printed.

The bool() function is used here because it provides a more idiomatic and clear way to check if a set is empty or not, compared to using the not not approach.

Checking if a Set is a Subset of Another Set

Another way to check if a set is empty is to check if it is a subset of an empty set. If a set is a subset of an empty set, it means that the set itself is empty. Here’s an example:

my_set = set()  # Creating an empty set
empty_set = set()

if my_set.issubset(empty_set):
    print("The set is empty.")
else:
    print("The set is not empty.")

Output:

The set is empty.

In this example, we first create an empty set my_set. We then create another empty set empty_set. We use the issubset() method to check if my_set is a subset of empty_set. Since my_set is empty, it is a subset of empty_set, and the condition my_set.issubset(empty_set) evaluates to True.

What to Use When

All the methods mentioned above are valid ways to check if a set is empty in Python. However, some methods are more concise and readable than others. Here’s a general guideline on when to use each method:

  • Use len(my_set) == 0 when you need to perform additional operations based on the length of the set.
  • Use bool(my_set) when you want a simple and concise way to check if a set is empty or not.
  • Use not my_set when you want a more compact way to check if a set is empty or not.
  • Use my_set.issubset(empty_set) when you need to check if a set is a subset of an empty set for some specific reason.

In general, using bool(my_set) or not my_set is the most concise and readable way to check if a set is empty or not in Python.

Code Examples

Here are some more code examples to illustrate how to check if a set is empty in Python:

# Creating an empty set
my_set = set()

# Checking if the set is empty using len()
if len(my_set) == 0:
    print("The set is empty.")
else:
    print("The set is not empty.")

# Checking if the set is empty using bool()
if bool(my_set):
    print("The set is not empty.")
else:
    print("The set is empty.")

# Checking if the set is empty using not
if not my_set:
    print("The set is empty.")
else:
    print("The set is not empty.")

# Creating a non-empty set
my_set = {1, 2, 3}

# Checking if the set is empty using len()
if len(my_set) == 0:
    print("The set is empty.")
else:
    print("The set is not empty.")

# Checking if the set is empty using bool()
if bool(my_set):
    print("The set is not empty.")
else:
    print("The set is empty.")

# Checking if the set is empty using not
if not my_set:
    print("The set is empty.")
else:
    print("The set is not empty.")

In this example, we first create an empty set my_set. We then check if my_set is empty using the len(), bool(), and not methods. Since my_set is empty, all three methods correctly identify it as an empty set.

We then create a non-empty set my_set = {1, 2, 3}. We check if my_set is empty using the same three methods. Since my_set is non-empty, all three methods correctly identify it as a non-empty set.