# Sets¶

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}
x
```

```
Out[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.union_update(B)`

-`A.intersection(B)`

- returns`A.intersection_update(B)`

-`A.isdisjoint(B)`

- returns`A.issubset(B)`

- returns`A.issuperset(B)`

- returns

Other operations like set difference are also supported

```
In [5]:
```

```
x
```

```
Out[5]:
```

```
{1, 2, 3, 5}
```

```
In [6]:
```

```
x.union([2,4,6])
```

```
Out[6]:
```

```
{1, 2, 3, 4, 5, 6}
```

```
In [7]:
```

```
x.intersection([2,3])
```

```
Out[7]:
```

```
{2, 3}
```

```
In [8]:
```

```
x.intersection_update([1,3,4])
```

```
In [9]:
```

```
x
```

```
Out[9]:
```

```
{1, 3}
```

**Note**: Graph and Sets

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

## 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.