# 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 and dictionary etc. The range() function can also be used as an iterable. Along with this, 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)