Sign In
Sign In

Python Sets and Set Operations

Python Sets and Set Operations
Shahid Ali
Technical writer
Python
27.09.2024
Reading time: 5 min

A set in Python is an unordered collection of unique elements. It is one of the fundamental data types in Python, offering flexibility in how data is stored and accessed. Unlike lists or tuples, sets do not allow duplicate elements, making them an ideal choice for handling unique values. Sets are often used in situations where operations such as membership testing, union, intersection, and difference are frequently performed.

This tutorial will cover the basics of Python sets, how to create them, and how to use Python set operations effectively. By the end, you’ll understand how to leverage sets in your Python projects for optimal performance and readability.

Why Use Sets in Python?

  • Sets ensure that there are no duplicate values.
  • They are useful for membership tests, eliminating duplicates, and performing set operations (union, intersection, etc.).
  • The operations on sets in Python are optimized for performance.

Creating Sets in Python

In Python, sets are created using curly braces {} or the set() constructor. If you use curly braces, you can define a set directly with its elements, while the set() constructor can be used to create an empty set or a set from an iterable.

Example 1: Creating a Set Using Curly Braces

fruits = {'apple', 'banana', 'cherry'}
print(fruits)

Example 2: Creating an Empty Set

empty_set = set()
print(empty_set)

Using {} without any elements creates an empty dictionary, not a set. To create an empty set, always use set().

Basic Set Operations

Python sets support various operations that allow developers to handle collections of data efficiently. Below are some of the most commonly used set operations.

Adding Elements to a Set

To add an element to a set, use the add() method. If the element already exists in the set, the set remains unchanged.

fruits = {'apple', 'banana'}
fruits.add('orange')
print(fruits)  # Output: {'apple', 'banana', 'orange'}

Removing Elements from a Set

You can remove elements using the remove() or discard() methods. The difference between the two is that remove() raises an error if the element is not found, while discard() does not.

fruits.remove('banana')
print(fruits)  # Output: {'apple', 'orange'}

# Using discard() to remove a non-existent element
fruits.discard('grape')  # No error is raised

Set Union

The union operation combines elements from two sets. The result contains all unique elements from both sets.

set_a = {1, 2, 3}
set_b = {3, 4, 5}
union_set = set_a.union(set_b)
print(union_set)  # Output: {1, 2, 3, 4, 5}

Set Intersection

Intersection returns only the elements that are present in both sets.

set_a = {1, 2, 3}
set_b = {2, 3, 4}
intersection_set = set_a.intersection(set_b)
print(intersection_set)  # Output: {2, 3}

Set Difference

The difference operation returns elements that are in one set but not in the other.

set_a = {1, 2, 3}
set_b = {2, 3, 4}
difference_set = set_a.difference(set_b)
print(difference_set)  # Output: {1}

Advanced Set Methods

Python sets provide several advanced methods that make them powerful tools for handling collections of data.

issubset()

The issubset() method checks if all elements of one set are present in another set.

Example:

# Define two sets
set_a = {1, 2, 3}
set_b = {1, 2, 3, 4, 5}

# Check if set_a is a subset of set_b
result = set_a.issubset(set_b)

# Print the result
print(result)  # Output: True

In this example:

  • set_a contains {1, 2, 3}, and all these elements are present in set_b, which contains {1, 2, 3, 4, 5}.
  • Since set_a is fully contained within set_b, issubset() returns True.

issuperset()

The issuperset() method checks if a set contains all elements of another set.

set_a = {1, 2, 3, 4}
set_b = {1, 2}
print(set_a.issuperset(set_b))  # Output: True

Symmetric Difference

The symmetric difference returns all elements that are in either of the sets but not in both.

set_a = {1, 2, 3}
set_b = {3, 4, 5}
symmetric_diff = set_a.symmetric_difference(set_b)
print(symmetric_diff)  # Output: {1, 2, 4, 5}

Use Cases of Sets in Python

Removing Duplicates from a List

One of the simplest use cases for sets is to remove duplicate items from a list.

my_list = [1, 2, 2, 3, 4, 4, 5]
unique_set = set(my_list)
unique_list = list(unique_set)
print(unique_list)  # Output: [1, 2, 3, 4, 5]

Membership Testing

Sets are highly optimized for membership testing, i.e., checking if an element is in the set.

my_set = {'apple', 'banana', 'cherry'}
print('banana' in my_set)  # Output: True

Mathematical Set Operations

Sets can be used to perform complex mathematical operations such as union, intersection, and difference.

Example:

# Define two sets
set_a = {1, 2, 3, 4}
set_b = {3, 4, 5, 6}

# 1. Union: Elements from both sets
union_result = set_a.union(set_b)
print(f"Union: {union_result}")  # Output: {1, 2, 3, 4, 5, 6}

# 2. Intersection: Common elements between both sets
intersection_result = set_a.intersection(set_b)
print(f"Intersection: {intersection_result}")  # Output: {3, 4}

# 3. Difference: Elements in set_a but not in set_b
difference_result = set_a.difference(set_b)
print(f"Difference: {difference_result}")  # Output: {1, 2}

# 4. Symmetric Difference: Elements that are in either set, but not both
sym_diff_result = set_a.symmetric_difference(set_b)
print(f"Symmetric Difference: {sym_diff_result}")  # Output: {1, 2, 5, 6}

In this example:

  • Union gives {1, 2, 3, 4, 5, 6}.

  • Intersection gives {3, 4}.

  • Difference gives {1, 2} (elements only in set_a).

  • Symmetric Difference gives {1, 2, 5, 6} (elements unique to each set).

Best Practices for Working with Sets

  • Use Sets for Unique Elements: Since sets automatically remove duplicates, use them when you need a collection of unique values.

  • Avoid Using Sets for Ordered Data: Sets do not maintain the order of elements. If order is important, consider using a list or tuple.

  • Leverage Set Operations: Use built-in set operations like union, intersection, and difference to simplify code that deals with data comparisons.

Conclusion

Python sets provide a powerful, easy-to-use tool for managing collections of unique elements. Whether you're performing membership tests, eliminating duplicates, or conducting set operations, Python sets are a must-have in any developer’s toolbox. Understanding and utilizing set operations will enhance your ability to write clean, efficient, and maintainable Python code.

By following the steps and best practices outlined in this guide, you can confidently use sets in your Python projects.

Python
27.09.2024
Reading time: 5 min

Do you have questions,
comments, or concerns?

Our professionals are available to assist you at any moment,
whether you need help or are just unsure of where to start
Email us