Learning Center
Python

Python Sets and Set Operations

27 Sep 2024
Shahid Ali
Shahid Ali

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?
Copy link

  • 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
Copy link

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)

Basic Set Operations
Copy link

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

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

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

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

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

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

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

issubset()
Copy link

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()
Copy link

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

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

Removing Duplicates from a List
Copy link

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

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

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

  • 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
Copy link

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. If you want to build a web service using Python, you can rent a cloud server at competitive prices with Hostman.