Data Structures: Sets

In this chapter, we will learn about sets, a versatile and powerful data structure in Python. Sets are used to store collections of unique elements and perform set operations like union, intersection, difference, and more. Sets are mutable, unordered, and do not allow duplicate values.

Creating Sets

In Python, sets are created by placing a sequence of comma-separated values inside curly braces {}. Here is an example of a simple set:

set_example.py
# Create a set of integers
numbers = {1, 2, 3, 4, 5}
print(numbers)

In this example, we create a set called numbers containing five integers. Sets can contain elements of any data type, including numbers, strings, and other sets.

Sets can also be created using the set() constructor by passing an iterable (like a list or tuple) as an argument:

set_from_list.py
# Create a set from a list
colors = set(['red', 'green', 'blue'])
print(colors)

Accessing Set Elements

Since sets are unordered, you cannot access elements of a set using an index. Instead, you can iterate over the elements of a set using a for loop or check for the presence of a specific element using the in operator.

Here is an example of iterating over the elements of a set:

set_iteration.py
colors = {'red', 'green', 'blue'}

# Iterate over the elements of the set
for color in colors:
    print(color)

In this example, we iterate over the elements of the colors set and print each element.

Modifying Sets

Sets are mutable, which means you can modify the elements they contain. You can add new elements to a set, remove existing elements, or update the elements of a set.

Set Operations

Sets support a variety of operations to perform common set operations like union, intersection, difference, and more. Here are some common set operations:

OperationDescription
add()Adds an element to the set.
remove()Removes an element from the set.
update()Updates the set with new elements.
``
&Intersection: Finds the common elements between two sets.
-Difference: Finds the elements that are present in the first set but not in the second set.
^Symmetric Difference: Finds the elements that are present in either set but not in both sets.
inMembership: Checks if an element is present in a set.
len()Length: Returns the number of elements in a set.
clear()Removes all elements from the set.
copy()Creates a shallow copy of the set.
pop()Removes and returns an arbitrary element from the set.
discard()Removes an element from the set if it is present.
difference()Returns the elements that are present in the first set but not in the second set.
intersection()Returns the common elements between two sets.
union()Returns the combined elements of two sets.
symmetric_difference()Returns the elements that are present in either set but not in both sets.
isdisjoint()Checks if two sets have no common elements.
issubset()Checks if all elements of one set are present in another set.
issuperset()Checks if all elements of another set are present in this set.

Sets are a powerful tool for working with collections of unique elements and performing set operations efficiently in Python. By understanding how to create, modify, and perform operations on sets, you can leverage the full potential of this versatile data structure in your Python programs.

Here are some common set operations:

  • Adding elements to the set:

    set_add.py
    colors = {'red', 'green', 'blue'}
    
    # Add a new color to the set
    colors.add('yellow')
    print(colors) # Output: {'red', 'green', 'blue', 'yellow'}
  • Removing elements from the set:

    set_remove.py
    colors = {'red', 'green', 'blue'}
    
    # Remove a color from the set
    colors.remove('green')
    print(colors) # Output: {'red', 'blue'}
  • Updating a set:

    set_update.py
    colors = {'red', 'green', 'blue'}
    
    # Update the set with new colors
    colors.update(['yellow', 'purple'])
    print(colors) # Output: {'red', 'green', 'blue', 'yellow', 'purple'}
  • Union: Combines the elements of two sets into a new set.

    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    result = set1 | set2
    print(result) # Output: {1, 2, 3, 4, 5}
  • Intersection: Finds the common elements between two sets.

    set_intersection.py
    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    result = set1 & set2
    print(result) # Output: {3}
  • Difference: Finds the elements that are present in the first set but not in the second set.

    set_difference.py
    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    result = set1 - set2
    print(result) # Output: {1, 2}
  • Symmetric Difference: Finds the elements that are present in either set but not in both sets.

    set_symmetric_difference.py
    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    result = set1 ^ set2
    print(result) # Output: {1, 2, 4, 5}
  • Membership: Checks if an element is present in a set.

    set_membership.py
    colors = {'red', 'green', 'blue'}
    print('red' in colors)  # Output: True
    print('yellow' in colors)  # Output: False
  • Length: Returns the number of elements in a set.

    set_length.py
    colors = {'red', 'green', 'blue'}
    print(len(colors))  # Output: 3
  • Clearing a set:

    set_clear.py
    colors = {'red', 'green', 'blue'}
    
    # Clear all elements from the set
    colors.clear()
    print(colors) # Output: set()
  • Copying a set:

    set_copy.py
    colors = {'red', 'green', 'blue'}
    
    # Create a shallow copy of the set
    colors_copy = colors.copy()
    print(colors_copy) # Output: {'red', 'green', 'blue'}
  • Removing an arbitrary element from the set:

    set_pop.py
    colors = {'red', 'green', 'blue'}
    
    # Remove and return an arbitrary element from the set
    color = colors.pop()
    print(color) # Output: 'red'
  • Checking if two sets have no common elements:

    set_isdisjoint.py
    set1 = {1, 2, 3}
    set2 = {4, 5, 6}
    
    # Check if the two sets are disjoint
    result = set1.isdisjoint(set2)
    print(result) # Output: True

In these examples, we add a new color to the colors set using the add() method, remove an existing color using the remove() method, and update the set with new colors using the update() method. We also demonstrate other common set operations like union, intersection, difference, and more. These set operations allow you to perform common set operations efficiently using Python’s built-in set data structure.

Applications of Sets

Sets are widely used in various applications to perform operations like deduplication, membership testing, and set operations efficiently. Here are some common applications of sets in Python:

  • Deduplication: Sets are used to remove duplicate elements from a collection. By converting a list or tuple to a set, you can eliminate duplicate values and retain only unique elements.

  • Membership Testing: Sets are used to check if an element is present in a collection efficiently. By converting a list or tuple to a set, you can perform membership testing in constant time.

  • Set Operations: Sets are used to perform common set operations like union, intersection, difference, and more. By leveraging the built-in set operations, you can efficiently perform set operations on collections of unique elements.

  • Counting Unique Elements: Sets are used to count the number of unique elements in a collection. By converting a list or tuple to a set, you can find the number of unique elements in the collection.

  • Filtering Unique Elements: Sets are used to filter unique elements from a collection. By converting a list or tuple to a set, you can filter out duplicate values and retain only unique elements.

Sets are a versatile data structure in Python that provides efficient ways to work with collections of unique elements. By understanding how to create, modify, and perform operations on sets, you can leverage the full potential of sets in your Python programs. Sets are a powerful tool for performing deduplication, membership testing, and set operations efficiently in Python.

Summary

In this chapter, we learned about sets, a versatile and powerful data structure in Python. Sets are used to store collections of unique elements and perform set operations like union, intersection, difference, and more. Sets are mutable, unordered, and do not allow duplicate values. We covered how to create sets, access set elements, modify sets, and perform common set operations efficiently using Python’s built-in set data structure. By understanding how to work with sets, you can leverage the full potential of this versatile data structure in your Python programs. Sets are a powerful tool for working with collections of unique elements and performing set operations efficiently in Python.

Exercise

  1. Create a set called fruits containing the names of different fruits.
  2. Add a new fruit ‘mango’ to the fruits set.
  3. Remove the fruit ‘apple’ from the fruits set.
  4. Check if the fruit ‘banana’ is present in the fruits set.
  5. Print the number of fruits in the fruits set.
  6. Create a new set called more_fruits containing additional fruit names.
  7. Find the common fruits between the fruits and more_fruits sets.
  8. Find the unique fruits present in either the fruits or more_fruits sets.
  9. Check if the fruits and more_fruits sets have any common elements.
  10. Clear all elements from the fruits set.

By completing this exercise, you will gain hands-on experience working with sets and performing common set operations in Python.

Key Points

  • Sets are used to store collections of unique elements in Python.
  • Sets are created by placing a sequence of comma-separated values inside curly braces {}.
  • Sets are mutable, unordered, and do not allow duplicate values.
  • Sets support a variety of operations, including adding elements, removing elements, updating sets, and performing set operations like union, intersection, difference, and more.
  • Sets are a powerful tool for working with collections of unique elements and performing set operations efficiently in Python. By understanding how to create, modify, and perform operations on sets, you can leverage the full potential of this versatile data structure in your Python programs. Sets are a powerful tool for performing deduplication, membership testing, and set operations efficiently in Python.