a = {1, 2, 3, 4, 5}
print(a) #### Output a = {5,2,3,1,4}
print(type(a)) #### Output will be
print(a) ### Output will be {1, 2, 3}
Sets can be used to perform mathematical set operations like union, intersection, symmetric difference. A set can have any number of items and they may be of different types (integer, float, tuple, string etc).
# set of integers
s = {1, 2, 3}
print(s)
# set of mixed datatypes
s = {1.0, “Hello”, (1, 2, 3)}
print(s)
s = set([1,2,3,2])
print(s)
How to change a set in Python?
- Sets are mutable. But since they are unordered, indexing does not work with sets.
- We cannot access/change an element of set using indexing or slicing. Set does not support it.
- We can add single element using the add() method and multiple elements using the update() method.
- The update() method can take tuples, lists, strings or other sets as its argument as in examples below. However, in all cases duplicates are avoided.
s = {1,3}
print(s)
# add an element
s.add(2)
print(s)
# add multiple elements
s.update([2,3,4])
print(s)
# add list and set
s.update([4,5], {1,6,8})
print(s)
How to remove elements from a set?
- A particular item can be removed from set using methods like discard() and remove().
- The only difference between the two methods is that, while using discard() if the item does not exist in the set, it remains unchanged.
- But remove() will raise an error in such condition.
s = {1, 3, 4, 5, 6}
s.discard(4)
print(s)
print(s)
s.discard(2)
print(s)
- Similarly, we can remove and return an item using the pop() method.
print(s.pop())
- Be careful with pop(). Set being unordered, there is no way of determining which item will be popped. It is completely arbitrary.
s.pop()
- We can also remove all items from a set using clear().
s.clear()
Python Set Operations:
- Sets can be used to carry out mathematical set operations like union, intersection, difference and symmetric difference.
- We can do these operations using operators or methods.
- Set Union
- Set Intersection
- Set Difference
- Set Symmetric Difference
- Set Union:
- Union of set A and set B is a set of all elements from both sets.
- Union is performed using ‘ | ‘ operator.
- Same can be accomplished using the method union().
- Example:
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
print(A | B) # use of | operator
# Output: {1, 2, 3, 4, 5, 6, 7, 8}
print(A.union(B)) # Output: {1, 2, 3, 4, 5, 6, 7, 8}
print(B.union(A)) # Output: {1, 2, 3, 4, 5, 6, 7, 8}
- Set Intersection:
- Intersection of set A and set B is a set of elements that are common in both sets.
- Intersection is performed using ‘&‘ operator.
- Same can be accomplished using the method intersection().
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
print(A & B) # use & operator. # Output: {4, 5}
# use intersection function on A
print(A.intersection(B)) # Output : {4, 5}
# Or use intersection function on B
print(B.intersection(A)) # Output: {4, 5}
- Difference of set A & set B is a set of elements that are only in A but not in B or vice versa.
- ex: B – A is a set of element in B but not in A
- ex A – B is a set of element in A but not in B.
- Difference is performed using ‘–‘ operator.
- Same can be accomplished using the method difference().
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
print(A – B) # use – operator on A # Output: {1, 2, 3}
# use difference function on A
print(A.difference(B)) # Output: {1, 2, 3}
# use – operator on B
print(B – A ) # Output: {8, 6, 7}
# use difference function on B
print(B.difference(A)) # Output: {8, 6, 7}
- Set Symmetric Difference:
- Symmetric Difference of A and B is a set of elements in both A and B except those elements that are common in both.
- Symmetric difference is performed using ‘^‘ operator.
- Same can be accomplished using the method symmetric_difference().
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
print(A ^ B) # use ^ operator. # Output: {1, 2, 3, 6, 7, 8}
# use symmetric_difference function on A
print(A.symmetric_difference(B)) # Output: {1, 2, 3, 6, 7, 8}
# use symmetric_difference function on B
print(B.symmetric_difference(A)) # Output: {1, 2, 3, 6, 7, 8}
Different Python Set Methods:
Other Set Operations:
- Set Membership Test
- We can test if an item exists in a set or not, using the keyword in.
s = set(“apple”)
print(‘a’ in s) # Output: True
print(‘p’ not in s) # Output: False
- Iterating Through a Set
for x in set(“apple”):
print(x)
Built-in Functions with Set:
- Frozenset is a new class that has the characteristics of a set, but its elements cannot be changed once assigned.
- While tuples are immutable lists, frozensets are immutable sets.
- Sets being mutable are unhashable, so they can’t be used as dictionary keys.
- On the other hand, frozensets are hashable and can be used as keys to a dictionary.
- Frozenset supports methods like copy(), difference(), intersection(), isdisjoint(), issubset(), issuperset(), symmetric_difference() and union().
- Being immutable it does not have method that add or remove elements.
- Frozensets can be created using the frozenset() function.
# initialize A and B
A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6])
print(A.isdisjoint(B)) # Output: False
print(A.difference(B)) # Output: frozenset({1, 2})
print(A | B) # Output: frozenset({1, 2, 3, 4, 5, 6})