In this tutorial, we will see in-depth details about Python Set Data Structure.

Python Set Data Structure:

Python Set represents a group of unique elements. If you wish to describe a group of unique items into a single entity, then you can go with Python Set.

Characteristics of Set in Python:

  • The Set doesn’t allow duplicate elements.
  • It doesn’t preserve the insertion order.
  • We can store the heterogeneous elements in a Set.
  • Set objects are mutable. Hence we can change the elements in a Set whenever we need it.

Creating Set :

You can create a Set using curly braces {} and set() function.

Example:

#set
s = {10,20,30,40}
print(type(s))

#set with hererogenious elements
s2 = {10,'A',"B",10.5}
print(type(s2))

#set with character elements
values = ['A','B','C','D']
s3 = set(values)
print(type(s3))

#set created uisng set() function
s4 = set(range(5))
print(type(s4))

Output:

<class 'set'>
<class 'set'>
<class 'set'>
<class 'set'>

Creating empty set is something tricky, we do not use empty curly braces {} to create empty Set, if you do like, it will create python directory for you instead of empty Set. If you want to create an empty set, you should go with for set() function.

#It will give dict type
s = {}
print(type(s))

# It will create an emtpy set
s2=set()
print(type(s2))

Output:

<class 'dict'>
<class 'set'>

Adding elements to Set:

You can add elements to set using add() or update() functions. add() function is used to add a single element at a time, whereas update() function is used to add multiple elements at a time.

update() function can take list, tuple, string as an argument and will add it to the set.

s1=set()
s1.add(10)
s1.add(20)
print(s1)

#Adding multiple elements at a time

list = ['H','E','L','L','O']
s1.update(list)

print("Updated Set : ",s1)

#Adding elements with range() function

s1.update(range(1,5),range(5,10,1))
print("Updated with range : ",s1)

Output:

As we discussed earlier, Python Set doesn’t preserve insertion order; we can’t expect the outcome as we insert.

{10, 20}
Updated Set :  {'L', 'O', 10, 'E', 'H', 20}
Updated with range :  {1, 2, 3, 4, 5, 'L', 'O', 6, 7, 10, 8, 9, 'E', 'H', 20}

Removing Elements from Set:

You can remove an element from Set using four different functions.

  • remove()
  • discard()
  • pop() and
  • clear()

remove()

remove(x) function is used to remove a specific element from the Set. If the given element is not found in the set, it will throw KeyError.

s1={10,20,30,40,50}
s1.remove(20)
print("After Removing 20 : ",s1)

#Removing unknown element
s1.remove(70)

Output:

After Removing 20 :  {40, 10, 50, 30}

Traceback (most recent call last):
  File ".\sample.py", line 6, in <module>
    s1.remove(70)
KeyError: 70

discard(x)

It removes the given element from the Set. The only difference between remove() and discard() is – If the given element not found in the Set, remove() function throw KeyError, whereas discard() doesn’t give any error.

s1={10,20,30,40,50}
s1.discard(50)
print("After discard 50 : ",s1)

#discard unknown element
s1.discard(100)
print("After discard 100 : ",s1)

Output:

After discard 50 :  {40, 10, 20, 30}
After discard 100 :  {40, 10, 20, 30}

pop()

pop() removes and returns some random element from the Set.

s1 = {1,'a',2,4,5,8,9}
print("poped element : ",s1.pop())

print("After pop() the set wil be : ")
print(s1)

Output:

poped element :  a
After pop() the set wil be :
{1, 2, 4, 5, 8, 9}

clear()

clear() function is used to remove all elements from the Set.

s1 = {1,'a',2,4,5,8,9}
print("Elements in Set: ",s1)

s1.clear()
print("After clearing ")
print(s1)

Output:

Elements in Set:  {1, 2, 4, 5, 8, 9, 'a'}
After clearing
set()

Python Set operations:

Set can be used in mathematical operations like union, intersection, difference and symmetric difference. Pythons gave different functions to handle these operations.

Union():

Let’s consider the below two sets:

s1 = {10,20,30,40,50}
s2 = {60,70,50,80,10}

union of s1 and s2 will produce a new set of all elements from both s1 and s2 sets. This operation also achieved using the | (or) operator.

Example:

s1 = {10,20,30,40,50}
s2 = {60,70,50,80,10}
print("union of s1, s2 : ",s1.union(s2))

print("s1 | s2         : ",s1|s2)

Output:

union of s1, s2 :  {70, 40, 10, 80, 50, 20, 60, 30}
s1 | s2         :  {70, 40, 10, 80, 50, 20, 60, 30}

intersection():

The intersection of two different sets (s1,s2) will produce a new set of elements which are common in both sets. It is also achieved using & (and) operator.

Example:

s1 = {10,20,30,40,50}
s2 = {60,70,50,80,10}
print("intersection of s1, s2 : ",s1.intersection(s2))

print("s1 & s2         : ",s1&s2)

Output:

intersection of s1, s2 :  {10, 50}
s1 & s2                :  {10, 50}

difference():

difference() function returns the elements which are present in s1 but not in s2. It is also achieved using – (minus) operator.

Example:

s1 = {10,20,30,40,50}
s2 = {60,70,50,80,10}
print("difference of s1, s2 : ",s1.difference(s2))
print("s1 - s2              : ",s1-s2)

Output:

difference of s1, s2 :  {40, 20, 30}
s1 - s2              :  {40, 20, 30}

symmentric_difference():

The symmentric_difference function returns the elements which are present in either s1 or s2 but not in both. It can also be achieved using the the ‘^’ operator.

Example:

s1 = {10,20,30,40,50}
s2 = {60,70,50,80,10}
print("symmetric_difference of s1, s2 : ",s1.symmetric_difference(s2))
print("s1 ^ s2                        : ",s1^s2)

Output:

symmetric_difference of s1, s2 :  {80, 20, 70, 40, 60, 30}
s1 ^ s2                        :  {80, 20, 70, 40, 60, 30}

Set Membership operations:

We can apply membership operators on python set data structure. The membership operators – in, not: are used to test whether a given element exists in the set or not.

Example:

s1 = {10,20,30,40,50}

print("is 10 in s1 ? ", 10 in s1)
print("is 60 in s1 ? ", 60 in s1)

Output:

is 10 in s1 ?  True
is 60 in s1 ?  False

Examples for Python Set:

References:

Happy Learning 🙂