# Permutation - Combination in Python

One of the key advantage of using Python as compared to other programming languages is that it has extensive library support. It has built-in package to find permutations and combinations of a sequence.

## Permutation

First of all, import itertools package for permutations method. This method takes iterable as parameter and returns list object containing each permutation as a tuple. An iterable object can be any data structure like list, tuple, set, string, dictionary and range iterable. Please note that, the iterable must have no repeating elements.

### Syntax

```permutations(iterable, r)
```

### Parameters

 `iterable` `Required. `iterable object like list, tuple, set, string , dictionary and range() etc. with no repeating element `r` `Optional. `number of items to permute. must be between 0 to n(number of element in iterable). default value is n.

### Example: Permutation of n out of n items

```from itertools import permutations
MyList = [1, 2, 3]

MyList_permuted = permutations(MyList)
for i in MyList_permuted:
print(i)
```

The output of the above code will be:

```(1, 2, 3)
(1, 3, 2)
(2, 1, 3)
(2, 3, 1)
(3, 1, 2)
(3, 2, 1)
```

### Example: Permutation of r items out of n items

```from itertools import permutations
MyList = [1, 2, 3]

MyList_permuted = permutations(MyList, 2)
for i in MyList_permuted:
print(i)
```

The output of the above code will be:

```(1, 2)
(1, 3)
(2, 1)
(2, 3)
(3, 1)
(3, 2)
```

## Combination

For combination, import itertools package for combinations method. This method takes iterable as parameter and returns list object containing each combination as a tuple. Iterable must have no repeating elements.

### Syntax

```combinations(iterable, r)
```

### Parameters

 `iterable` `Required. `iterable object like list, tuple, set, string , dictionary and range() etc. with no repeating element `r` `Required. `number of items. must be between 0 to n(number of element in iterable).

### Example: Combination of r items out of n items

```from itertools import combinations
MyList = [1, 2, 3]

MyList_combination = combinations(MyList, 2)
for i in MyList_combination:
print(i)
```

The output of the above code will be:

```(1, 2)
(1, 3)
(2, 3)
```

## Combination with replacement

If the replacement of item is allowed, then combinations_with_replacement method is used which is found in itertools package. This method takes iterable as parameter and returns list object containing each combination as a tuple. Iterable must have no repeating elements

### Syntax

```combinations_with_replacement(iterable, r)
```

### Parameters

 `iterable` `Required. `iterable object like list, tuple, set, string , dictionary and range() etc. with no repeating element `r` `Required. `number of items. must be between 0 to n(number of element in iterable).

### Example: Combination with replacement of r items out of n items

```from itertools import combinations_with_replacement
MyList = [1, 2, 3]

MyList_comb_rplc = combinations_with_replacement(MyList, 2)
for i in MyList_comb_rplc:
print(i)
```

The output of the above code will be:

```(1, 1)
(1, 2)
(1, 3)
(2, 2)
(2, 3)
(3, 3)
```

5