Python Tutorial - Data Type-Set

Jinku Hu Sep 17, 2020
  1. Create Python Sets
  2. Python Set Update
  3. Remove Elements From a Python Set
  4. Python Set Operations
  5. Python Set Methods
  6. Other Python Set Operations
  7. Python Set Built-In Functions
  8. Python Frozenset
Python Tutorial - Data Type-Set

In this section, you will learn how to create sets in Python and how to add and remove elements from sets.

Set contains unique items and is an unordered list of elements.

Info
set is a mutable object so that you can add and delete items from a set.

Create Python Sets

A set in Python can be created using curly braces {} and the items are separated by commas. You can also create a set using the built-in method set().

The elements of a set can be of different data types. The elements of a set should be immutable. For example, you can have a tuple as an element of the set but you cannot have a set or dictionary or list as elements of the set.

>>> x = {3, 5, 7, 2, 4, 5}		
>>> print(x)		#prints the set variable
{2, 3, 4, 5, 7}
>>> print(type(x))		#checking type of x
<class 'set'>

You could use the set() method with empty parameters to create an empty list. If you write {} to create an empty object, it is interpreted as a dictionary:

>>> x = {}
>>> print(type(x))
<class 'dict'>

>>> x = set()
>>> print(type(x))
<class 'set'>

Python Set Update

Indexing and slicing cannot be used to change elements of a set because set is not a ordered data type.

A single element can be added in a set using the add() method. If you want to add more than one element in the set then you have to use the update() method.

>>> s = {2, 4}
>>> print(s)
{2, 4}

>>> s.add(6)
>>> print(s)
{2, 4, 6}

>>> s.update([2, 4, 6])
>>> print(s)
{2, 4, 6}

>>> s.update([5,6], {7, 8, 9})
>>> print(s)
{2, 4, 5, 6, 7, 8, 9}

Remove Elements From a Python Set

To remove an element from a set you can either use discard() method or remove() method.

The difference between these methods is that discard() method will not prompt anything if the element to be deleted is not in the set whereas, remove() will generate an error if the element to be deleted is not found.

>>> s = {2, 4, 5, 6, 7, 8, 9}
>>> print(s)
{2, 4, 5, 6, 7, 8, 9}

>>> s.discard(6)
>>> print(s)
{2, 4, 5, 7, 8, 9}

>>> s.remove(8)
>>> print(s)
{2, 4, 5, 7, 9}

>>> s.discard(6)		#no error
>>> s.remove(8)			#generated an error
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    s.remove(8)
KeyError: 8

You can also use pop() to remove an item from a set. pop() removes and returns one arbitrary set element.

>>> s = set("Python")
>>> s
{'o', 'n', 'h', 'P', 'y', 't'}
>>> s.pop()
o
>>> s.pop()
n
>>> s
{'h', 'P', 'y', 't'}
>>> s.clear()
>>> print(s)
set()

You could use set clear() method to clear all the set elements.

>>> s = set("Python")
>>> s.clear()
>>> s
set()

Python Set Operations

You can perform operations such as union, intersection, difference, and symmetric_difference.

Suppose you have two sets x and y:

>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 10, 11, 12}

Union

The Union of two sets results in a new set containing all elements of both the sets.

To perform union operation, you can use either | operator or the union() method.

>>> print(x | y)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

#using union() method on x
>>> x.union(y)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
#union on y
>>> y.union(x)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

Python Set Intersection

The Intersection of two sets results in a new set containing the items that are common in both of the sets.

To perform intersection operation, you can use either & operator or the intersection() method.

>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 2, 6, 1}
>>> print(x & y)
{1, 2, 6}

#using intersection() method on x
>>> x.intersection(y)
{1, 2, 6}
#intersection on y
>>> y.intersection(x)
{1, 2, 6}

Python Sets Difference

The difference of two sets results in a new set that contains elements of the first set that are not present in the second set.

For example, x - y is elements of x not in y. Similarly, y - x is elements of y not in x.

To perform difference, you can use either - operator or the difference() method.

>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 2, 6, 1}
>>> print(x - y)
{3, 4, 5}

#using difference() method on x
>>> x.difference(y)
{3, 4, 5}
#diference on y
>>> y.difference(x)
{8, 9, 7}

Python Sets Symmetric Difference

The symmetric difference of two sets results in a new set that contains elements that are not common in both sets.

To perform symmetric difference, you can use either ^ operator or the symmetric_difference() method.

>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 2, 6, 1}
>>> print(x ^ y)
{3, 4, 5, 7, 8, 9}

#using symmetric_difference() method on x
>>> x.symmetric_difference(y)
{3, 4, 5, 7, 8, 9}
#symmetric_diference on y
>>> y.symmetric_difference(x)
{3, 4, 5, 7, 8, 9}

Python Set Methods

The following is the list of methods that can be applied on sets in Python:

Method Description
add() add an element to a set
clear() clear the elements of the set (clears entire set)
copy() return the copy of a set
difference() return a new set that contains elements of the first set that are not present in the second set.
difference_update() remove all elements of another set from the current set
discard() remove a specific element from a set
intersection() return a new set containing the items that are common in both of the sets.
intersection_update() update a set with the intersection of this set with another set
isdisjoint() return a True when two sets results in a null intersection
issubset() return a True when another set has the current set
issuperset() return a True when the current set has another set
pop() return an element from a set
remove() remove a specific element from a set. If the element is not in the set an error will be generated.
symmetric_difference() return a new set that contains elements that are not common in both sets.
symmetric_difference_update() update a set with the symmetric difference of this set with another set
union() return a new set containing all elements of both the sets.
update() update a set with the union of this set with another set

Other Python Set Operations

Set Membership Check

The in keyword tests if an item is a member of the set or not.

>>> s = set("Blue")
>>> print('o' in s)
False
>>> print('l' in s)
True

Iterate Through a Set

You can iterate through a set by using for loop:

for i in set("Blue"):
    print(i)

Result:

B
l
u
e

Python Set Built-In Functions

The following are some of the built-in functions that can be used with sets to perform different tasks:

Functions Description
all() return True when all the elements of the set are True. It also returns True when the set is empty.
any() return True when any of the element of the set is True. It returns False when the set is empty.
enumerate() return the index and the value of all the elements of the set as a tuple. It returns an enumerate object.
len() return the number of items in a set or the length of the set.
set() define a set.
max() return the maximum item in the set.
min() return the minimum item in the set.
sorted() return a sorted list of elements of a set.
sum() return the sum of all elements of the set.

Python Frozenset

Frozenset is a special set whose elements cannot be updated when assigned once. Frozensets are immutable sets.

As sets are mutable so you cannot use them as a key for in dictionary but frozen sets are immutable, hence, you can use frozen sets as dictionary keys.

A frozenset can be created using the frozenset() method.

The following are some of the methods supported by frozenset:

  • copy()
  • difference()
  • intersection()
  • isdisjoint()
  • issubset()
  • issuperset()
  • symmetric_difference()
  • union()
>>> x = frozenset([2,6,3,9])
>>> y = frozenset([6,1,2,4])
>>> x.difference(y)
frozenset({9, 3})
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook