Set is a mutable, unordered collection of unique, hashable elements(may be of same or different types), which is indexed by a 0-based integer.

Creating Set

  • Creating an empty set
x = set()
  • Creating set with some initial elements
x = {2,3,0,'g'}
  • Creating an empty set with {} is not possible as {} is reserved for dictionary dict objects
In [3]:
x = {1,2,5,3}
{1, 2, 3, 5}

Accessing Set Elements

Being an unordered collection, sets do not record element position or order of insertion. Accordingly, sets do not support indexing, slicing, or other sequence-like behavior.

Operations on Set

Like any other collection, set supports membership operators in and not in, elements of set can be iterated. If A and B are 2 sets,Following is a list of other operations on set

  • A.union(B) - returns A\cup B
  • A.union_update(B) - A= A\cup B
  • A.intersection(B) - returns A\cap B
  • A.intersection_update(B) - A= A\cap B
  • A.isdisjoint(B) - returns A\cap B == \emptyset
  • A.issubset(B) - returns A \subseteq B
  • A.issuperset(B) - returns A \supseteq B

Other operations like set difference are also supported

In [5]:
{1, 2, 3, 5}
In [6]:
{1, 2, 3, 4, 5, 6}
In [7]:
{2, 3}
In [8]:
In [9]:
{1, 3}

Note: Graph and Sets

Many Graph Algorithms are modelled using sets. A Graph G is considered as a collection of sets of vertices V and sets of edges E

Set of Sets

In many cases, it is required to have set of sets as in case of finding subsets of a set. Since set is not hashable, it is not possible to have a ``set`` as an element of ``set``. In this case frozenset comes handy. The only difference between frozenset and a set is that frozenset is immutable. We have to reassign value to it if we want to modify it.