Set in Python
What is Set ?
In one line we can define it as, sets are unordered collection of unique elements.
In set, element's order are undefined.
Set has only unique elements, means we can't add duplicate element in set.
Sets are mutable object.
Though set is mutable object itself, but set can't have mutable type of objects like list, ,set, or dictionary
as its element.
Set can have any number of items and they may be of different types (integer, float, tuple, string etc.). But a set can't have a mutable element, like list, set or dictionary, as its element.
How to create Set ?
Set can be created by placing sequence of values separated by 'comma' ( , ) within the curly { }
bracket, or
by using set( )
function.
# set of integers my_set = {1, 2, 3} print(my_set) [OUTPUT] {1, 2, 3} # set of mixed datatypes my_set = {1.0, "Prowess", (1, 2, 3)} print(my_set) [OUTPUT] {1.0, 'Prowess', (1, 2, 3)} # using set() function my_set = set("Prowess") print(my_set) [OUTPUT] {'s', 'o', 'e', 'w', 'P', 'r'} #as we can see elements are unordered #It also does not contain duplicate elements #In the above output we can see 's' is 1 time only
Creating an empty set :
Empty set can be created by only using set( )
function.
#creating empty set
my_set = set()
print(type(my_set)) # < class 'set'>
NOTE :
#using empty curly bracket { }
#will not create empty 'set', it will create
#empty 'dictionary'.
a = {}
print(type(a)) # < class 'dict'>
NOTE : Since sets are unordered, index has no meaning. So, We cannot access or change an element of set using indexing or slicing. Set does not support it.
my_set = {1, 2, 3} print(my_set[2]) [OUTPUT] Traceback (most recent call last): File "< pyshell#17>", line 1, in < module> print(my_set[2]) TypeError: 'set' object does not support indexing
OPERATIONS ON SET:
Update a set in Python:
By using add( )
, and update( )
function we can add new elements.
add( )
function adds a single element.
update( )
function adds multiple elements at a time.
Example :
my_set = {1,2,3} my_set.add(4) print(my_set) [OUTPUT] {1, 2, 3, 4} # add multiple elements my_set.update([1,2,5,6]) print(my_set) [OUTPUT] # Duplicate element discard {1, 2, 3, 4, 5, 6} # add list and set my_set.update([7,8],{9,10}) print(my_set) [OUTPUT] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Remove element from a set in Python:
By using discard( )
, and remove( )
function we can remove a particular element from set.
The only difference between discard( )
, and remove( )
is that, discard( )
remove an element from set if it is a member. (Do nothing if the element is not in the set),
while remove( )
remove an element from a set, if the element is not a member, raise a KeyError.
Example :
>>>my_set = {5,10,2,25,20} >>> print(my_set) {2, 5, 10, 20, 25} #Discard element >>> my_set.discard(10) >>> print(my_set) {2, 5, 20, 25} #discard element not in set >>> my_set.discard(100) >>> print(my_set) {2, 5, 20, 25} #Remove element >>> my_set.remove(20) >>> print(my_set) {2, 5, 25} #Remove element not in set >>> my_set.remove(200) Traceback (most recent call last): File "< pyshell#37>", line 1, in < module> my_set.remove(200) KeyError: 200
There are more functions like pop( )
and clear( )
, which we can use to remove element from a set.
pop( )
, remove and return an arbitary set element. Raise KeyError if the set is empty.
clear( )
, removes all elements from a set.
Example :
>>>my_set = {5,10,2,25,20} >>> print(my_set) {2, 5, 10, 20, 25} #pop an element # random output >>> my_set.pop() >>>2 #in my case it gives 2 #clear the set >>> my_set.clear() >>> print(my_set) set() #pop an element #set is empty >>> my_set.pop() Traceback (most recent call last): File "< pyshell#51 >", line 1, in < module > my_set.pop() KeyError: 'pop from an empty set'
More Methods :
Method | Description |
---|---|
all() | Returns true if all element are true or if set is empty. |
any() | return true if any element of the set is true. if set is empty, return false. |
len() | Returns length of the set or size of the set. |
max() | return largest item in the given set. |
min() | return minimum element of given set. |
sum() | Sums up the numbers in the set. |
sorted() | Return a new sorted list from elements in the set(does not sort the set itself). |
Program to understand the functions :
>>> my_set = {10,20,30,40,10,10} >>> print(all(my_set)) True >>> print(any(my_set)) True >>> print(len(my_set)) 4 >>> print(max(my_set)) 40 >>> print(min(my_set)) 10 >>> print(sum(my_set)) 100 >>> print(sorted(my_set)) [10, 20, 30, 40]
SET RELATED OPERATIONS IN PYTHON:
Set can be used for mathematical set operations like union, intersection, difference etc. We can perform these operations by using methods or operators.
Operation | Equivalent | Description |
---|---|---|
set1.union(set2) | set1|set2 | Returns a set which is the union of sets set1 and set2 . |
set1.update(set2) | set1|=set2 | Adds all elements of array set2 to the set set1 . |
set1.intersection(set2) | set1&set2 | Returns a set which is the intersection of sets set1 and set2 . |
set1.intersection_update(set2) | set1&=set2 | Update the set1 with the intersection of itself and another. |
set1.difference(set2) | set1 - set2 | Returns the set difference of set1 and set2 (the elements included in set1, but not included in set2). |
set1.difference_update(set2) | set1-=set2 | Removes all elements of set2 from the set set1 . |
set1.symmetric_difference(set2) | set1^set2 | Returns new set with elements in either set1 or set2 but not both. |
set1.symmetric_difference_update(set2) | set1^=set2 | Update set1 with elements from set1 or set2 but not both. |
set1.issubset(set2) | set1<=set2 | Test whether every element in set1 is in set2 , and returns true otherwise false. |
set1.issuperset(set2) | set1>=set2 | Test whether every element in set2 is in set1 , and returns true otherwise false. |
set1.isdisjoint(set2) | Return True if two sets have a null intersection. | |
check proper subset | set1<set2 | Return True if set1 is proper subset of set2 . |
check proper superset | set1>set2 | Return True if set1 is proper superset of set2 . |
check equal | set1=set2 | Return True if set1 is equivalent to set2 . |
Code Snippet to illustrate all Set operations in Python
# Creating two sets set1 = set() set2 = set() # Adding elements to set1 for i in range(1, 6): set1.add(i) # Adding elements to set2 for i in range(3, 8): set2.add(i) print("Set1 = ", set1) print("Set2 = ", set2) print("\n") # Union of set1 and set2 set3 = set1 | set2# set1.union(set2) print("Union of Set1 and Set2: Set3 = ", set3) # Intersection of set1 and set2 set4 = set1 & set2# set1.intersection(set2) print("Intersection of Set1 & Set2: Set4 = ", set4) print("\n") # Checking relation between set3 and set4 if set3 > set4: # set3.issuperset(set4) print("Set3 is superset of Set4") elif set3 < set4: # set3.issubset(set4) print("Set3 is subset of Set4") else : # set3 == set4 print("Set3 is same as Set4") # displaying relation between set4 and set3 if set4 < set3: # set4.issubset(set3) print("Set4 is subset of Set3") print("\n") # difference between set3 and set4 set5 = set3 - set4 print("Elements in Set3 and not in Set4: Set5 = ", set5) print("\n") # checkv if set4 and set5 are disjoint sets if set4.isdisjoint(set5): print("Set4 and Set5 have nothing in common\n") # Removing all the values of set5 set5.clear() print("After applying clear on sets Set5: ") print("Set5 = ", set5)OUTPUT
Set1 = {1, 2, 3, 4, 5} Set2 = {3, 4, 5, 6, 7} Union of Set1 and Set2: Set3 = {1, 2, 3, 4, 5, 6, 7} Intersection of Set1 & Set2: Set4 = {3, 4, 5} Set3 is superset of Set4 Set4 is subset of Set3 Elements in Set3 and not in Set4: Set5 = {1, 2, 6, 7} Set4 and Set5 have nothing in common After applying clear on sets Set5: Set5 = set()
Frozen Sets
- Frozen sets are immutable objects, it has the characteristics of a set, but its elements cannot be changed once assigned.
The
frozenset()
is an inbuilt function in Python which takes an iterable objects as argument and make them immutable.
Use ?
Since sets are mutable objects and unhashable, they can't be used as keys in dictionary. But frozensets
are hashable and can be used as key in dictionary data type.
Methods support by frozenset:
frozenset
supports methods like copy()
, difference()
, intersection()
,
isdisjoint()
, issubset()
, issuperset()
, symmetric_difference()
and union()
.
Frozenset doesn't support any method that update and remove elements.
Example:
# if no parameters are passed to forzenset() # method, then it returns empty frozenset object. >>> my_froset = frozenset() >>> print(my_froset) [OUTPUT] frozenset() >>> my_froset1 = frozenset([1,2,3,4,2,6]) >>> print(my_froset1) [OUTPUT] frozenset({1, 2, 3, 4, 6}) >>> my_froset1.add(10) # can not perform Traceback (most recent call last): File "< pyshell#83 >", line 1, in < module > my_froset1.add(10) AttributeError: 'frozenset' object has no attribute 'add'
Next chapter is Dictionary
Training For College Campus
We offers college campus training for all streams like CS, IT, ECE, Mechanical, Civil etc. on different technologies
like
C, C++, Data Structure, Core Java, Advance Java, Struts Framework, Hibernate, Python, Android, Big-Data, Ebedded & Robotics etc.
Please mail your requirement at info@prowessapps.in
Projects For Students
Students can contact us for their projects on different technologies Core Java, Advance Java, Android etc.
Students can mail requirement at info@prowessapps.in