Python set
last modified January 29, 2024
Python set tutorial presents the Python set collection. We show how to create sets and perform operations on them.
Python set
A Python set is an unordered collection of data with no duplicate elements. A set supports operations like union, intersection, or difference, known from Mathematics.
Python set literal
It is possible to create sets with literal notation. We use curly brackets to define a set in Python and the elements are separated with the comma character.
#!/usr/bin/python nums = { 1, 2, 2, 2, 3, 4 } print(type(nums)) print(nums)
The example creates a Python set with literal notation.
nums = { 1, 2, 2, 2, 3, 4 }
A set is a collection of unique elements; even though we have provided value 2 three times, the set will contain only one 2.
$ ./python_set_literal.py <class 'set'> {1, 2, 3, 4}
Python set function
The Python set
function creates a new set whose elements
are taken from an iterable. An iterable is an object we can iterate over; such
as a string or a list.
#!/usr/bin/python seasons = ["spring", "summer", "autumn", "winter"] myset = set(seasons) print(myset)
In the example, we create a set from a list with the set
built-in function.
$ ./python_set_fun.py {'summer', 'autumn', 'winter', 'spring'}
Python set membership testing
The in
and not in
operators test for
the existence of an element in the set.
#!/usr/bin/python words = { "spring", "table", "cup", "bottle", "coin" } word = 'cup' if (word in words): print("{0} is present in the set".format(word)) else: print("{0} is not present in the set".format(word)) word = 'tree' if (word not in words): print("{0} is not present in the set".format(word)) else: print("{0} is present in the set".format(word))
We check if two words are present in the set with the membership operators.
$ ./python_set_membership.py cup is present in the set tree is not present in the set
Python set built-in functions
There are several built-in Python functions, such as len
, or
min
, that can be used on Python sets.
#!/usr/bin/python nums = { 21, 11, 42, 29, 22, 71, 18 } print(nums) print("Number of elements: {0}".format(len(nums))) print("Minimum: {0}".format(min(nums))) print("Maximum: {0}".format(max(nums))) print("Sum: {0}".format(sum(nums))) print("Sorted elements:") print(sorted(nums))
In the example we apply five built-in functions on a set of integer values.
print("Number of elements: {0}".format(len(nums)))
The len
method returns the number of elements in the set.
print("Minimum: {0}".format(min(nums)))
The min
method returns the minimum value in the set.
print("Maximum: {0}".format(max(nums)))
The max
method returns the maximum value in the set.
print("Sum: {0}".format(sum(nums)))
The sum
method returns the summation of values in the set.
print(sorted(nums))
Finally, with the sorted
method, we can create a sorted list
from the set, which is unordered.
$ ./python_set_builtins.py {71, 42, 11, 18, 21, 22, 29} Number of elements: 7 Minimum: 11 Maximum: 71 Sum: 214 Sorted elements: [11, 18, 21, 22, 29, 42, 71]
Python set iteration
A Python set can be iterated with a for loop.
#!/usr/bin/python words = { "spring", "table", "cup", "bottle", "coin" } for word in words: print(word)
In the example, we go through the set and print its elements one by one.
$ ./python_set_iteration.py table cup coin spring bottle
Python set add
The Python set add
method adds a new element to the
set.
#!/usr/bin/python words = { "spring", "table", "cup", "bottle", "coin" } words.add("coffee") print(words)
We have a set of words. We add a new word with the add
method.
$ ./python_set_add.py {'table', 'coffee', 'coin', 'spring', 'bottle', 'cup'}
Python set update
The Python set update
method adds one or more iterables
to the set.
#!/usr/bin/python words = { "spring", "table", "cup", "bottle", "coin" } words.add("coffee") print(words) words2 = { "car", "purse", "wind" } words3 = { "nice", "prime", "puppy" } words.update(words2, words3) print(words)
We have three sets of words. We add the second and third set to the
first set with the update
method.
$ ./python_set_update.py {'spring', 'bottle', 'cup', 'coin', 'purse', 'wind', 'nice', 'car', 'table', 'prime', 'puppy'}
Python set remove
Python has two basic methods for removing elements: remove
and
discard
. The remove
method removes the specified
element from the set and raises KeyError
if the element is not in
the set. The discard
method removes an element from the set and does
nothing if the element to be removed is not in the set.
#!/usr/bin/python words = { "spring", "table", "cup", "bottle", "coin" } words.discard("coin") words.discard("pen") print(words) words.remove("cup") try: words.remove("cloud") except KeyError as e: pass print(words)
In the example, we delete set elements with remove
and
discard
.
try: words.remove("cloud") except KeyError as e: pass
If we did not catch the KeyError
, the script would terminate
without executing the last statement.
$ ./python_set_remove.py {'table', 'cup', 'bottle', 'spring'} {'table', 'bottle', 'spring'}
Python set pop & clear
The pop
method removes and returns an arbitrary element
from the set. The clear
method removes all elements from
the set.
#!/usr/bin/python words = { "spring", "table", "cup", "bottle", "coin", "pen", "water" } print(words.pop()) print(words.pop()) print(words) words.clear() print(words)
In the example, we delete and print two random elements and show the
remaining elements. Then we remove all elements from the set with clear
.
$ ./python_set_remove2.py water pen {'cup', 'spring', 'table', 'bottle', 'coin'} set()
Python set operations
With Python sets we can perform specific operations: union, intersection, difference, and symmetric difference.
#!/usr/bin/python set1 = { 'a', 'b', 'c', 'c', 'd' } set2 = { 'a', 'b', 'x', 'y', 'z' } print("Set 1:", set1) print("Set 2:", set2) print("intersection:", set1.intersection(set2)) print("union:", set1.union(set2)) print("difference:", set1.difference(set2)) print("symmetric difference:", set1.symmetric_difference(set2))
The example shows four set operations.
print("intersection:", set1.intersection(set2))
The intersection
method carries out the intersection operation, which
returns elements that are both in set1
and set2
.
print("union:", set1.union(set2))
The union
method carries out the union operation,
which returns all elements from both sets.
print("difference:", set1.difference(set2))
The difference
method carries out the difference operation, which
returns elements that are in the set1
but not in set2
.
print("symmetric difference:", set1.symmetric_difference(set2))
The symmetric_difference
method carries out the symmetric
difference operation, which returns elements that are in set1
or
set2
, but not in both.
$ ./python_set_operations.py Set 1: {'c', 'b', 'a', 'd'} Set 2: {'y', 'b', 'a', 'x', 'z'} intersection: {'b', 'a'} union: {'b', 'a', 'z', 'c', 'x', 'y', 'd'} difference: {'c', 'd'} symmetric difference: {'z', 'c', 'x', 'y', 'd'}
It is possible to perform these operations using &, |, -, and ^ operators.
#!/usr/bin/python set1 = { 'a', 'b', 'c', 'c', 'd' } set2 = { 'a', 'b', 'x', 'y', 'z' } print("Set 1:", set1) print("Set 2:", set2) print("intersection:", set1 & set2) print("union:", set1 | set2) print("difference:", set1 - set2) print("symmetric difference:", set1 ^ set2)
The example shows four set operations using operators.
Subsets and supersets
If all elements of set A are contained withing set B, A is called a subset of B and B a superset of A.
#!/usr/bin/python set1 = { 'a', 'b', 'c', 'd', 'e' } set2 = { 'a', 'b', 'c' } set3 = {'x', 'y', 'z' } if (set2.issubset(set1)): print("set2 is a subset of set1") if (set1.issuperset(set2)): print("set1 is a superset of set2") if (set2.isdisjoint(set3)): print("set2 and set3 have no common elements")
In the example, we use issubset
, issuperset
,
and isdisjoint
methods.
if (set2.issubset(set1)): print("set1 is a subset of set2")
With the issubset
method we check if set2
is a subset
of s1
.
if (set1.issuperset(set2)): print("set1 is a superset of set2")
With the issuperset
method we check if set1
is a
superset of s2
.
if (set2.isdisjoint(set3)): print("set2 and set3 have no common elements")
With the isdisjoint
method we check if set2
and
set3
have no common elements.
$ ./python_subset_superset.py set1 is a subset of set2 set1 is a superset of set2 set2 and set3 have no common elements
Python immutable sets
Immutable sets (sets that cannot be modified) are created with the
frozenset
function.
>>> s1 = frozenset(('blue', 'green', 'red')) >>> s1 frozenset({'red', 'green', 'blue'}) >>> s1.add('brown') Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'frozenset' object has no attribute 'add'
There is an error when we try to add a new element to a frozen set.
Source
Python datastructures - language reference
In this article we have worked with the Python set collection.
Author
List all Python tutorials.