Sets are basically collection of certain items that are unordered. There is no specific order in which they are stored. In Python sets are same, but there are few differences with basic sets.
- The elements in python sets are unique, there can’t be duplicate items in python sets. If duplicate items entered, it will be ignored and final set will always contain unique elements.
 - Python sets are mutable. But, its elements are immutable. Once entered items cannot be modified.
 - Python set’s item cannot be accessed using indexes. There is no index attached to set items.
 
This tutorial explains the following examples in Python set:
- Create a Simple Set
 - Create a Set with Constructor
 - Create an Empty Set
 - Create a Set from List
 - Create a Set from Tuple
 - Access a Specific Value in Set
 - Add Items to a Set – Using Add Method
 - Add Items to a Set – Using Update Method
 - Remove Items from Set – Using Discard Method
 - Remove Items from Set – Using Remove Method
 - Union Operation on Sets
 - Intersection Operation on Sets
 - Difference Operation on Sets
 - Symmetric Difference of Two Sets
 - Compare two Sets
 - Membership Test on Sets
 - Iterating on Set
 - Clearing a Set
 - Interesting Problem Solved using Sets
 - Full Example Code of Sets – sets.py
 
1. Create a Simple Set
Python sets can be created by simply writing the items within curly braces.
>>> primes={3,5,7,9,11,13}
>>> type(primes)
<class 'set'>
Note: Keep in mind that Python dictionaries also uses {} in declaration. But, in the above example, we’ve created a set as indicated by the type command output.
For Python dictionaries, refer to this: Python Dictionary Examples – Create, Update and Delete Elements
2. Create a Set with Constructor
Use set as shown below and pass the initial string as constructor.
In the following example, we are purposefully adding another “s” in front of “stuff”, which will be ignored by the set. It will take only one “s” even when we gave more than one.
>>> unique=set("thegeeksstuff");
>>> unique
{'h', 't', 'u', 's', 'f', 'e', 'g', 'k'}
>>> type(unique)
<class 'set'>
3. Create an Empty Set
The following is an incorrect way of creating an empty set. This will create an empty dictionary:
>>> empty={}
>>> type(empty)
<class 'dict'>
The correct way to create is shown below. To create an empty set, use the set method with empty constructor as shown below.
>>> empty=set(); >>> type(empty) <class 'set'>
While trying to create empty set, use constructor method. Otherwise using 1st method will make an empty dictionary instead.
4. Create a Set from List
First create a list as shown below:
>>> primesList=[3,5,7,11,13,17];
To learn more about list, refer to this: Python List Examples – Insert, Append, Length, Index, Remove, Pop
Next, create a set using the above list:
>>> primeSet=set(primesList)
>>> type(primeSet)
<class 'set'>
>>> primeSet
{3, 5, 7, 11, 13, 17}
5. Create Set from Tuple
First, create a tuple as shown below.
>>> p=(3,5,7,11,13); >>> p (3, 5, 7, 11, 13) >>> type(p) <class 'tuple'>
To learn more about tuples, refer to this: 17 Practical Python Tuples Examples
Next, create a set from the above tuple:
>>> primes=set(p);
>>> p
(3, 5, 7, 11, 13)
>>> type(primes)
<class 'set'>
>>> primes
{3, 5, 7, 11, 13}
6. Access a Specific Value in Set
Set elements cannot be accessed specifically, there is no index attached to it. We cannot access elements of set.
>>> primes = {3, 5, 7, 11, 13}
>>> primes[1]
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
primes[1]
TypeError: 'set' object does not support indexing
7. Add Items to a Set – Using Add Method
Items can be added to set using two methods add and update. Add method can insert single element but update method can insert tuple, lists too.
>>> primes={3,5,7,11};
>>> primes
{11, 3, 5, 7}
>>> primes.add(19);
>>> primes
{3, 5, 7, 11, 19}
8. Add Items to a Set – Using Update Method
The following will add the items from the plist to the primes set.
>>> plist=[12,14,15,16];
>>> primes.update(plist);
>>> primes
{3, 5, 7, 11, 12, 14, 15, 16, 19}
9. Remove Items from Set – Using Discard Method
Items can be removed from set using discard and remove method. While removing items, if item does not exist, remove reports and error while discard doesn’t.
>>> primes
{3, 5, 'santosh', 7, 11, 12, 14, 15, 16, 19}
>>> primes.discard("santosh")
>>> primes
{3, 5, 7, 11, 12, 14, 15, 16, 19}
>>> primes.discard("santosh");
While trying to remove already removed item, discard does not report an error.
10. Remove Items from Set – Using Remove Method
Currently primes set has the following values.
>>> primes
{3, 5, 7, 11, 12, 14, 15, 16, 19}
The following will remove the item with value 11 from the primes set.
>>> primes.remove(11);
As you see below, we don’t see item with value 11 anymore in primes set.
>>> primes
{3, 5, 7, 12, 14, 15, 16, 19}
>>> primes.remove(11);
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
primes.remove(11);
KeyError: 11
Remove method reported error when trying to remove element which does not exist.
11. Union Operation on Sets
Union operation (|) will create a new set with distinct items from both the sets.
>>> prime1={3,5,7,11};
>>> prime2={3,5,7,11,13,17,19}
>>> primes=prime1 | prime2
>>> primes
{3, 5, 7, 11, 13, 17, 19}
12. Intersection Operation on Sets
Intersection operation (&) will create a new set with items common to both the sets.
>>> prime1={3,5,7,11};
>>> prime2={3,5,7,11,13,17,19}
>>> primes=prime1 & prime2
>>> primes
{3, 11, 5, 7}
13. Difference Operation on Sets
Difference operation will create a new set containing elements that are in first set but not in the second set
>>> prime2={3,5,7,11,13,17,19}
>>> prime1={3,5,7,11};
>>> primes=prime2-prime1
>>> primes
{17, 19, 13}
14. Symmetric Difference of Two Sets
Symmetric difference of two sets will create a new set containing elements from both the sets except common elements.
>>> prime2={3,5,7,11,13,17,19}
>>> prime1={3,5,7,11,91,101};
>>> primes=prime2 ^ prime1
>>> primes
{17, 19, 101, 91, 13}
15. Compare two Sets
Using comparison we can check if one set is superset or subset or equal to another set.
>>> prime1={3,5,7,11,91,101};
>>> prime={3,5,7,11,91,101};
>>> test=prime==prime1
>>> test
True
>>> prime1={3,5,7,11,91,101};
>>> prime2={3,5,7,11,13,17,19}
>>> test=prime2<prime1
>>> test
False
>>> prime2={3,5,7,11,13,17,19}
>>> prime1={3,5,7,11,91,101};
>>> prime1={3,5,7,11};
>>> test=prime2<prime1
>>> test
False
>>> test=prime2>prime1
>>> test
True
16. Membership Test on Sets
We can test if an element exist or not in specified set.
>>> prime1={3,5,7,11,91,101};
>>> test= 3 in prime1
>>> test
True
>>> test=13 in prime1
>>> test
False
17. Iterating on Set
Let us use the following primes set for this example.
>>> primes={3,5,7,11,91,101};
use for loop to loop through the set elements.
>>> for prime in primes:
print(prime);
3
5
101
7
11
To learn more about for loop, refer to this: 12 Essential Python For Loop Command Examples
18. Clearing a Set
Using clear method, all the items of set can be deleted.
>>> prime1
{3, 5, 101, 7, 11, 91}
>>> prime1.clear()
>>> prime1
set()
19. Interesting Problem Solved using Sets
Problem statement: given a list of integers, print all the distinct elements.
Using sets we can solve this problem in single line of code.
>>> number = [1,2,3,4,5,2,3,4,7,8,9,8,12,13,14,14,19]
>>> number
[1, 2, 3, 4, 5, 2, 3, 4, 7, 8, 9, 8, 12, 13, 14, 14, 19]
>>> print (set(number))
{1, 2, 3, 4, 5, 7, 8, 9, 12, 13, 14, 19}
This was a use case, similarly sets can be useful in other scenarios.
20. Full Example Code of Sets – sets.py
Create a sets.py file
vi sets.py
Copy/paste the following into sets.py and execute it for your testing.
#1) Creating set
primes={3,5,7,9,11,13}
type(primes)
# 2) Creating set with constructor
unique=set("thegeeksstuff");
unique
# 3) Creating empty set
empty={}
type(empty)
empty=set();
type(empty)
#4) Creating set from List
primesList=[3,5,7,11,13,17];
primeSet=set(primesList)
type(primeSet)
primeSet
# 5) Creating set from tuple
p=(3,5,7,11,13);
primes=set(p);
type(primes)
primes
# 6) Accessing values in Set
Primes = {3, 5, 7, 11, 13};
#Primes[1]; # uncommenting this throw error
#7) Using Add method
primes={3,5,7,11};
primes.add(19);
primes
# 8) Using update method
plist=[12,14,15,16];
primes.update(plist);
primes
#9) Using discard
primes={3, 5, 'santosh', 7, 11, 12, 14, 15, 16, 19};
primes.discard("santosh")
# 10) Using remove
primes = {3, 5, 7, 11, 12, 14, 15, 16, 19}
primes.remove(11);
primes;
# 11) Union operation on sets
prime1={3,5,7,11};
prime2={3,5,7,11,13,17,19}
primes=prime1 | prime2
primes
# 12) Intersection operation on Sets
prime1={3,5,7,11};
prime2={3,5,7,11,13,17,19}
primes=prime1 &  prime2
primes
# 13) Difference operation on sets
prime2={3,5,7,11,13,17,19}
prime1={3,5,7,11};
primes=prime2-prime1
primes
# 14) Symmetric difference
prime2={3,5,7,11,13,17,19}
prime1={3,5,7,11,91,101};
primes=prime2 ^ prime1
primes
# 15) Compare two sets
prime1={3,5,7,11,91,101};
prime={3,5,7,11,91,101};
test=prime==prime1
test
prime1={3,5,7,11,91,101};
prime1={3,5,7,11};
test=prime2<prime1
test
#16) Membership test on sets
prime1={3,5,7,11,91,101};
test= 3 in prime1
test
# 17) Iterating on set
primes={3,5,7,11,91,101};
for prime in primes:
    print(prime);
# 18) Clearing a set
prime1
{3, 5, 101, 7, 11, 91}
prime1.clear()
#19) interesting problem
number = [1,2,3,4,5,2,3,4,7,8,9,8,12,13,14,14,19]
print (set(number))
Executing the above sets.py will display the following output. Study the above code properly to understand why you are getting the following output.
$ python sets.py 3 5 7 11 91 101 set([1, 2, 3, 4, 5, 7, 8, 9, 12, 13, 14, 19])






My name is Ramesh Natarajan. I will be posting instruction guides, how-to, troubleshooting tips and tricks on Linux, database, hardware, security and web. My focus is to write articles that will either teach you or help you resolve a problem. Read more about 
Comments on this entry are closed.
The following code works perfectly ok –
mylist=[10,20,30]
myset=set(mylist)
print(myset)
but the following does not –
mylist=[10,20,30]
myset=set({10,20,30,mylist})
print(myset)
______________________________
Please tell the reason.