Sets
Python also offers a set
data structure built in.
A set does not have duplicate elements, nor should the ordering be important.
A set
is presented with curly braces {}
in Python.
>>> vowels = {"a", "e", "i", "o", "u"}
>>> print(vowels) # note the ordering
>>> vowels = {"i", "o", "a", "a", "e", "u", "e", "i", "a"}
>>> print(vowels)
You can also convert another sequence (e.g. list
or tuple
) into a set using the set()
constructor. Here is one practical application for this:
>>> words = ["let", "it", "go", ",", "let", "it", "go", ",", "can't",
... "hold", "it", "back", "any", "more", "!"]
>>> vocabulary = set(words)
>>> print(vocabulary)
To create an empty set, you should use the set()
constructor. You cannot use {}
because you will end up with a dict
which also happens to use {}
(we will discuss dict
s after this).
>>> empty_set = set()
>>> print(empty_set)
>>> print(type(empty_set))
>>> empty_dict = {}
>>> print(type(empty_dict))
You cannot access an element in a set. Why? Hint: Think about the definition of set.
>>> x = {1, 2, 3}
>>> print(x[1]) # NO!
You will need to convert a set to a list if you need to access individual elements.
>>> x = {1, 2, 3}
>>> y = list(x)
>>> print(y[1])
Adding elements to a set
You can use set
’s add()
method to add a new element to the set.
>>> x = {1, 3, 2}
>>> x.add(4)
>>> print(x)
You can also add multiple elements in one go with the update()
method.
>>> x = {8, 2, 5}
>>> x.update([3, 5, 2, 3])
>>> print(x)
Removing elements from a set
You can remove an element from a set with the discard()
method. Python will not do anything if you try to remove an element that is not in the set.
>>> x = {3, 9, 7}
>>> x.discard(3)
>>> print(x)
>>> x.discard(8)
>>> print(x)
A stricter method called remove()
will cause Python to raise an error if you try to remove an element that is not in the set. May be useful if you need such a behaviour!
>>> x = {3, 9, 7}
>>> x.remove(8) # What is the error message?
Set operations
Python provides overloaded operators for various set operations. Some of these are also available as methods of the set
object. I will let you explore these on your own.
Operation | Math Notation | Python Operator | Object Methods |
---|---|---|---|
Union | \(A \cup B\) | a_set | b_set |
a_set.union(b_set) |
Intersection | \(A \cap B\) | a_set & b_set |
a_set.intersection(b_set) |
Difference | \(A \setminus B\) | a_set - b_set |
a_set.difference(b_set) |
Symmetric difference | \(A \triangle B\) | a_set ^ b_set |
a_set.symmetric_difference(b_set) |
Membership | \(x \in B\) | x in b_set |
|
Non-membership | \(x \notin B\) | x not in b_set |
|
Proper Subset | \(A \subset B\) | a_set < b_set |
|
Subset | \(A \subseteq B\) | a_set <= b_set |
a_set.issubset(b_set) |
Proper Superset | \(A \supset B\) | a_set > b_set |
|
Superset | \(A \supseteq B\) | a_set >= b_set |
a_set.issuperset(b_set) |