Ran into a problem that needed set as a tool to solve it.
What is a set?
A set is a collection of unordered unique objects.
What are the common operations
Intersection, union subset and so on.
Operation Result len(s) number of elements in set s (cardinality) x in s test x for membership in s x not in s test x for non-membership in s s.issubset(t) test whether every element in s is in t s.issuperset(t) test whether every element in t is in s s.union(t) new set with elements from both s and t s.intersection(t) new set with elements common to s and t s.difference(t) new set with elements in s but not in t s.symmetric_difference(t) new set with elements in either s or t but not both s.copy() new set with a shallow copy of s
What it can’t do
Slicing, indexing and other things that associated with orders.
Can we hash sets?
No we can not hash sets since set is mutable.So set doesn’t have the hash function in its class.
What if we want to have a set of set?
We will talk about immutable Set soon. It is a set that’s immutable therefore we can subsequently use it as a object to hash
Set classes implementation
It is implemented using a dictionary so it requires objects in the set to have hash() and eq()
As the name indicate, it is a set that doesn’t change and subsequently has a hash() function.