Back to Python
2026-02-145 min read

Python Sets

Learn Python Sets step by step with clear examples and exercises.

Title: Master Python Sets: A full guide with Real-World Examples and Common Mistakes

Why This Matters

Python sets are a fundamental data structure that can help you manage unique elements, perform fast operations, and solve complex problems efficiently. Understanding Python sets is crucial for acing coding interviews, debugging real-world applications, and writing clean, efficient code. In this lesson, we will delve deep into the world of Python sets, learning their core concepts, working with examples, identifying common mistakes, and answering frequently asked questions.

Prerequisites

Before diving into Python sets, it is essential to have a strong foundation in:

  1. Basic Python syntax and data types (e.g., variables, strings, integers)
  2. Control structures (e.g., if-else statements, loops)
  3. List comprehensions
  4. Functions and modules
  5. Understanding the difference between lists and sets
  6. Familiarity with Python's built-in data types and functions

Core Concept

A set in Python is an unordered collection of unique elements. Unlike lists, sets do not allow duplicate values, making them ideal for operations that require speed and uniqueness. Here's how to create a set:

my_set = {1, 2, 3, 4, 5}
print(my_set) # Output: {1, 2, 3, 4, 5}

You can also create a set using the set() constructor:

my_set = set([1, 2, 3, 4, 5])
print(my_set) # Output: {1, 2, 3, 4, 5}

Sets can be combined using the union(), intersection(), difference(), and symmetric_difference() methods. For example:

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

union_result = set1.union(set2)
intersection_result = set1.intersection(set2)
difference_result = set1.difference(set2)
symmetric_diff_result = set1.symmetric_difference(set2)

print("Union:", union_result) # Output: {1, 2, 3, 4, 5, 6}
print("Intersection:", intersection_result) # Output: {3, 4}
print("Difference:", difference_result) # Output: {1, 2}
print("Symmetric Difference:", symmetric_diff_result) # Output: {1, 2, 5, 6}

Set Operations with Multiple Sets

You can also perform set operations on more than two sets using the union(), intersection(), and difference() methods. For example:

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
set3 = {7, 8, 9, 10}

union_result = set1.union(set2).union(set3)
intersection_result = set1.intersection(set2).intersection(set3)
difference_result = set1.difference(set2).difference(set3)

print("Union:", union_result) # Output: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
print("Intersection:", intersection_result) # Output: {3, 4}
print("Difference:", difference_result) # Output: {1, 2, 7, 8, 9}

Set Comprehensions

Python also supports set comprehensions for creating sets from other iterables. For example:

odd_numbers = {number for number in range(1, 11) if number % 2 != 0}
print(odd_numbers) # Output: {1, 3, 5, 7, 9}

Worked Example

Let's say we have three sets representing the members of different clubs—A, B, and C. We want to find out how many members are in all three clubs (intersection), how many are only in club A (difference between A and the intersection of B and C), how many are only in club B (difference between B and the intersection of A and C), and how many are only in club C (difference between C and the intersection of A and B).

club_a = {"Alice", "Bob", "Charlie", "David"}
club_b = {"Bob", "Charlie", "Eve", "Frank"}
club_c = {"Charlie", "Gina", "Harry", "Ivy"}

intersection_result = club_a.intersection(club_b).intersection(club_c)
difference_result_a = club_a.difference(intersection_result)
difference_result_b = club_b.difference(intersection_result)
difference_result_c = club_c.difference(intersection_result)

print("Intersection:", intersection_result) # Output: {"Charlie"}
print("Difference (Club A):", difference_result_a) # Output: {"Alice", "David"}
print("Difference (Club B):", difference_result_b) # Output: {"Eve", "Frank"}
print("Difference (Club C):", difference_result_c) # Output: {"Gina", "Harry", "Ivy"}

Common Mistakes

  1. Forgetting to use curly braces: When defining a set, always remember to enclose the elements in curly braces or use the set() constructor.
  1. Using duplicate values: Since sets do not allow duplicates, using duplicate values will result in an error.
  1. Confusing lists and sets: Remember that sets are unordered collections of unique elements, while lists can contain duplicates and maintain the order of their elements.
  1. Not understanding set operations: Be sure to understand how the union(), intersection(), difference(), and symmetric_difference() methods work, as well as how they can be chained together.
  1. Using the wrong method for checking membership: To check if a value is in a set, use the in keyword instead of the contains() method.

Practice Questions

  1. Write a Python script to find the union, intersection, difference, and symmetric difference between two sets containing integers from 1 to 20.
  2. Given three sets A = {1, 2, 3}, B = {4, 5, 6}, and C = {7, 8, 9}, calculate the union, intersection, difference, and symmetric difference between them.
  3. Write a Python script to find all pairs of integers from 1 to 20 that are in neither set A nor B, where A = {2, 4, 6, 8, 10, 12, 14, 16, 18} and B = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}.
  4. Write a Python script to find the union of all even numbers from 2 to 50 that are in sets A, B, and C, where A = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}, B = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50}, and C = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48}.
  5. Write a Python script to find the intersection of all odd numbers from 1 to 50 that are in sets A, B, and C, where A = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47}, B = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49}, and C = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49}.

FAQ

How can I check if a value is present in a set?

To check if a value exists in a set, use the in keyword:

my_set = {1, 2, 3}
if 2 in my_set:
print("2 is in the set.")

How do I add an element to a set?

To add an element to a set, use the add() method or the update() method with a single item:

my_set = {1, 2, 3}
my_set.add(4) # Adds 4 to the set
my_set.update([5]) # Adds 5 to the set

How do I remove an element from a set?

To remove an element from a set, use the remove() method:

my_set = {1, 2, 3}
my_set.remove(2) # Removes 2 from the set

How do I check if a set is empty?

To check if a set is empty, use the len() function or the __len__() method:

my_set = {}
if len(my_set) == 0:
print("The set is empty.")

or

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

How do I find the size of a set?

To find the size (number of elements) of a set, use the len() function or the __len__() method:

my_set = {1, 2, 3}
print(len(my_set)) # Output: 3
Python Sets | Python | XQA Learn