Python set is an un-ordered and un-indexed collection of elements.

- Every element is unique.
- The set contains elements that are un-ordered.
- No duplicates are allowed.
- The set itself is mutable i.e. one can add/remove items(elements) from it.
- Unlike arrays, wherein the elements are stored in order, the order of elements in a set is not defined.
- The elements in the set are not stored in their order of appearance in the set.

## Creation of Sets in Python

Set can be created by placing all the elements within curly braces {}, separated by a comma. They can also be created by using the built-in function `set()`

.

The elements can be of different data types, but a Set doesn’t support mutable elements. Sets are unordered, so one can’t be sure of the order of elements in which they will appear.

### Example: Creation of Sets

```
Days=set(["Mon","Tue","Wed","Thu","Fri","Sat","Sun"])
Fruits = {"apple", "banana", "cherry"}
Name=set('Quit')
print(Name)
print(Fruits)
print(Days)
```

**Output**:

{‘u’, ‘Q’, ‘i’, ‘t’}

{‘cherry’, ‘banana’, ‘apple’}

{‘Sun’, ‘Wed’, ‘Mon’, ‘Thu’, ‘Tue’, ‘Sat’, ‘Fri’}

**Recommended Readings:**

## Access elements from the Python Set

Since, sets are un-ordered and un-indexed, one cannot access the elements by referring to its index, unlike arrays.

The elements of the Sets can be accessed by either of the following ways:

- Iterate through the loop of the set items using a
`for`

loop . - Check whether a specified value is present in a set, by using the
`in`

keyword .

### Example: Accessing elements from a Set

```
Fruits = {"apple", "mango", "cherry"}
for a in Fruits:
print(a)
print("banana" in Fruits)
print("mango" in Fruits)
```

**Output**:

mango

cherry

apple

False

True

## Add elements to a Python Set

We can add elements to a set by using `add() `

function. In case, we require to add more elements we need to use `update()`

method to do so.

### Example: Addition of elements to a Set

```
Fruits = {"apple", "mango", "cherry"}
Fruits.add("grapes")
print(Fruits)
Fruits.update(["banana", "orange", "strawberry"])
print(Fruits)
```

**Output**:

{‘cherry’, ‘apple’, ‘mango’, ‘grapes’}

{‘strawberry’, ‘cherry’, ‘apple’, ‘orange’, ‘banana’, ‘mango’, ‘grapes’}

## Removal of elements from a Set

We can delete the items from the Set using either of the following methods:

- By using
`remove()`

method - By using
`discard()`

method - By using
`clear()`

method – deletes all the elements from the Set - By using
`del()`

method – deletes the entire Set

### Example 1: Using remove() method

```
Fruits = {"apple", "grapes", "cherry"}
Fruits.remove("grapes")
print(Fruits)
```

**Output**:

{‘cherry’, ‘apple’}

### Example 2: Using discard() method

```
Fruits = {"apple", "grapes", "cherry"}
Fruits.discard("grapes")
print(Fruits)
```

**Output**:

{‘cherry’, ‘apple’}

### Example 3: Using clear() method

```
Fruits = {"apple", "grapes", "cherry"}
Fruits.clear()
print(Fruits)
```

**Output**:

set()

### Example 4: Using del() method

```
Fruits = {"apple", "grapes", "cherry"}
del Fruits
print(Fruits)
```

**Output**:

```
Traceback (most recent call last):
File "main.py", line 5, in <module>
print(Fruits)
NameError: name 'Fruits' is not defined
```

## Methods in Sets

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 |

## Set Operations in Python

Sets are used to carry out mathematical functionality set operations such as union, difference, intersection, and symmetric difference.

### Set Union – Inclusion of all elements from both the sets.

Union operation is performed by either of the following methods:

- By using
`|`

operator - By using
`union()`

method

#### Example: Union of Sets

```
X = {1, 2, 3}
Y = {6, 7, 8}
print(X | Y)
print(Y.union(X))
```

**Output**:

{1, 2, 3, 6, 7, 8}

{1, 2, 3, 6, 7, 8}

### Set Intersection – Inclusion of elements that are common to both the sets.

Intersection operation is performed by either of the following methods:

- By using
`&`

operator - By using
`intersection(`

) method

#### Example: Intersection of Sets

```
X = {1, 2, 3}
Y = {3, 2, 8}
print(X & Y)
print(Y.intersection(X))
```

**Output**:

{2, 3}

{2, 3}

### Set Difference – Inclusion of elements from either of the sets.

(A – B) contains the elements that are only in set A but not in set B.

(B – A) contains the elements that are only in set B but not in set A.

Difference operation is performed by either of the following methods:

- By using
`-`

operator - By using
`difference()`

method

#### Example: Difference of Sets

```
X = {1, 2, 3}
Y = {3, 2, 8}
print(X - Y)
print(Y.difference(X))
```

**Output**:

{1}

{8}

### Set Symmetric Difference – Inclusion of elements from both the sets except the common elements of the sets

Symmetric Difference operation is performed by either of the following methods:

- By using
`^`

operator - By using
`symmetric_difference()`

method

#### Example: Symmetric Difference of Sets

```
X = {1, 2, 3, 9, 0}
Y = {3, 2, 8, 7, 5}
print(X ^ Y)
print(Y.symmetric_difference(X))
```

**Output**:

{0, 1, 5, 7, 8, 9}

{0, 1, 5, 7, 8, 9}