10-2. Sets: In or Out, No Duplicates

In programming, different data structures provide various tools and techniques to organize and manage data effectively. One such data structure is the set. Sets are designed to hold an unordered collection of unique values. They automatically exclude any duplicate values, making them ideal for certain types of data processing tasks.

Why Use Sets?

Sets are particularly useful when dealing with membership-related tasks, such as:

  • Checking if a specific value is in a set.
  • Determining common values between two sets.

Characteristics of Python Sets

  • Unordered Collections:
    • Sets are unordered collections of unique elements. This means that the order of elements in a set is not guaranteed and can change.
  • Unique Elements:
    • All elements in a set are unique. If you try to add a duplicate element, it will be ignored.
  • Mutable:
    • Sets are mutable, allowing you to add, remove, and update elements after the set has been created.
  • Immutable Counterpart - Frozenset:
    • Python also provides a frozenset, which is an immutable version of a set. Once created, elements cannot be added or removed from a frozenset.
  • Built-in Methods:
    • Sets come with several built-in methods for common operations, such as:
      • add(elem): Adds an element to the set.
      • update(iterable): Updates the set with elements from an iterable.
      • remove(elem): Removes an element from the set; raises a KeyError if not found.
      • discard(elem): Removes an element if present; does nothing if not found.
      • pop(): Removes and returns an arbitrary element from the set; raises a KeyError if the set is empty.
      • clear(): Removes all elements from the set.
      • union(*others): Returns a new set with elements from the set and all others.
      • intersection(*others): Returns a new set with elements common to the set and all others.
      • difference(*others): Returns a new set with elements in the set that are not in the others.
      • symmetric_difference(other): Returns a new set with elements in either the set or other but not both.

You can access detailed documentation about these methods by using the help function in Python interactive mode.

>>> help(set.add)
Help on method_descriptor:
add(...)
    Add an element to a set.
    This has no effect if the element is already present.

 

Examples of Data in Sets

The data in a set can represent anything, from financial information to social media posts, or even data used to analyze severe storms. The flexibility of sets in handling various data types makes them universally useful.

Sets in Python

Python provides built-in support for sets, making them easy to use in your programs. Sets in Python are implemented as an object-oriented class, meaning they come with a set of predefined functions (or methods) that you can use to manipulate the set.

Creating a Set in Python

To create a set in Python, you can use the set constructor function. Here’s an example:

set1 = set([1, 2, 4])

 

In this example, set1 is a set containing the values 1, 2, and 4.

Another way to create a set is by using curly braces {}. Here’s how:

set1 = {3, 5, 6}

 

This also creates a set containing the values 3, 5, and 6.

Example Usage

# Creating a set
fruits = {"apple", "banana", "cherry"}
# Adding an element
fruits.add("orange")

# Removing an element
fruits.remove("banana")

# Checking for membership
print("apple" in fruits) # Output: True

# Iterating over a set
for fruit in fruits:
    print(fruit)

# Using set operations
set1 = {1, 2, 3}
set2 = {3, 4, 5}

union_set = set1.union(set2) # {1, 2, 3, 4, 5}
intersection_set = set1.intersection(set2) # {3}
difference_set = set1.difference(set2) # {1, 2}
symmetric_difference_set = set1.symmetric_difference(set2) # {1, 2, 4, 5}