Python sets
- A set is an unordered collection of unique and unhashable objects.
- So, tuples, lists and dictionaries, etc. can be members of a set.
set
is mutable so, can add/remove elements to/from the set.set
can't allow elements to be replaced
create a set¶
unique_numbers = {1,2,3,4}
names = set(["Anji", "Smita"])
set - no duplicate elements¶
duplicates = [1,2,3,4,5,5,4,3,2,6]
unique = set(duplicates)
print(unique)
# Output: {1, 2, 3, 4, 5, 6}
add element to set¶
- use method
set.add()
to add element to set.
names = {"John", "Jenny", "Lilly"}
names.add("Anji")
print(names)
# Output: {'Anji', 'Lilly', 'Jenny', 'John'}
remove element from set¶
- use method
set.remove()
to remove element from set. - it raises an error if element doesn't exist.
names = {"John", "Jenny", "Lilly"}
names.remove("Jenny")
print(names)
# Output: {'Lilly', 'John'}
- use method
set.discard()
to remove element from set - unlike
set.remove()
it didn't throw an error.
names = {"John", "Jenny", "Lilly"}
names.discard("Jenny")
names.discard("Anji")
print(names)
# Output: {'Lilly', 'John'}
set - for
loop¶
fruits = {"apple", "banana", "cherry"}
for fruit in fruits:
print(fruit)
# Output:
# cherry
# apple
# banana
check if element exist in set¶
- use
in
operator to check if element exist
fruits = {"apple", "banana", "cherry"}
print("apple" in fruits)
# Output: True
check if element doesn't exist in set¶
- use
not in
operator to check if element does not exist
fruits = {"apple", "banana", "cherry"}
print("apple" not in fruits)
# Output: True
update set with any iterable¶
- use method
set.update()
to update set with any iterable likelist
,tuple
,set
, etc.
s1 = {1,2,3}
s2 = {4,5,6}
s1.update(s2)
print(s1)
# Output: {1, 2, 3, 4, 5, 6}
s1.update([7,8,9])
print(s1)
# Output: {1, 2, 3, 4, 5, 6, 7, 8, 9}
remove random element from set¶
- use
set.pop()
to remove random element
numbers = {1,2,3,4,5,6}
numbers.pop()
print(numbers)
# Output: {2, 3, 4, 5, 6}
find set difference¶
- use
set.difference()
method or-
operator.
mammals = {"Lion", "Deer", "Bat"}
fliers = {"Parrot", "Eagle", "Bat"}
diff = mammals - fliers
print(diff)
# Output: {'Lion', 'Deer'}
print(mammals.difference(fliers))
# Output: {'Lion', 'Deer'}
find set symmetric difference¶
- it can be done in two ways
- can use
^
operator or methodset1.symmetric_difference(set2)
mammals = {"Lion", "Deer", "Bat"}
fliers = {"Parrot", "Eagle", "Bat"}
diff = mammals ^ fliers
print(diff)
# Output: {'Deer', 'Eagle', 'Lion', 'Parrot'}
print(mammals.symmetric_difference(fliers))
# Output: {'Deer', 'Eagle', 'Lion', 'Parrot'}
find union of sets¶
- use
|
operator or methodset1.union(iterable)
- iterable can be a
list
,tuple
,set
, etc.
mammals = {"Lion", "Deer", "Bat"}
fliers = {"Parrot", "Eagle", "Bat"}
union = mammals | fliers
print(union)
# Output: {'Lion', 'Deer', 'Bat', 'Eagle', 'Parrot'}
print(mammals.union(fliers))
# Output: {'Lion', 'Deer', 'Bat', 'Eagle', 'Parrot'}
find intersection of sets¶
- use
&
operator or methodset1.intersection(iterable)
- iterable can be a
list
,tuple
,set
, etc.
mammals = {"Lion", "Deer", "Bat"}
fliers = {"Parrot", "Eagle", "Bat"}
common = mammals & fliers
print(common)
# Output: {'Bat'}
print(mammals.intersection(fliers))
# Output: {'Bat'}
check if sets are disjoint¶
- use method
set.isdisjoint(iterable)
- iterable can be a
list
,tuple
,set
, etc
mammals = {"Lion", "Deer"}
fliers = {"Parrot", "Eagle", "Bat"}
is_disjoint = mammals.isdisjoint(fliers)
print(is_disjoint)
# Output: True
check if set is subset of other set¶
- use method
set.issubset(iterable)
- iterable can be a
list
,tuple
,set
, etc.
s1 = {1,2,3,4,5,6,7,8}
s2 = [1,2]
print(s2.issubset(s1))
# Output: True
check if set is superset of other set¶
- use method
set.issuperset(iterable)
s1 = {1,2,3,4,5,6,7,8}
s2 = (1,2)
print(s1.issuperset(s2))
# Output: True
using operators in
and not in
with sets¶
s = {1,2,3,4}
print("a" in s)
# Output: False
print("a" not in s)
# Output: True
set methods¶
Method | Description |
---|---|
add() | Adds an element to the set |
clear() | Removes all the elements from the set |
copy() | Returns a copy of the set |
difference() | Returns a set containing the difference between two or more sets |
difference_update() | Removes the items in this set that are also included in another, specified set |
discard() | Remove the specified item |
intersection() | Returns a set, that is the intersection of two other sets |
intersection_update() | Removes the items in this set that are not present in other, specified set(s) |
isdisjoint() | Returns whether two sets have a intersection or not |
issubset() | Returns whether another set contains this set or not |
issuperset() | Returns whether this set contains another set or not |
pop() | Removes an element from the set |
remove() | Removes the specified element |
symmetric_difference() | Returns a set with the symmetric differences of two sets |
symmetric_difference_update() | Inserts the symmetric differences from this set and another |
union() | Return a set containing the union of sets |
update() | Update the set with the union of this set and others |
Find more information about sets at python official docs