Python provides direct methods to find permutations and combinations of a sequence. These methods are present in itertools package.
Permutation
First import itertools package to implement the permutations method in python. This method takes a list as an input and returns an object list of tuples that contain all permutations in a list form.
Python3
# A Python program to print all
# permutations using library function
from
itertools
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]0
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]1
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]2
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]2
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]4
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]5
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]6
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]7
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]8
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]9
[1, 2] [1, 3] [2, 3]0
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]9
[1, 2] [1, 3] [2, 3]2
[1, 2] [1, 3] [2, 3]3
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]2
[1, 2] [1, 3] [2, 3]5
[1, 2] [1, 3] [2, 3]6
[1, 2] [1, 3] [2, 3]7
[1, 2] [1, 3] [2, 3]8
[1, 2] [1, 3] [2, 3]9
[1, 2] [1, 3] [2, 3]0
[1, 2] [1, 3] [2, 3]1
[1, 2] [1, 3] [2, 3]2
[1, 2] [1, 3] [2, 3]3
Output:
[1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 1, 2] [3, 2, 1]
It generates n! permutations if the length of the input sequence is n.
If want to get permutations of length L then implement it in this way.
Python3
# A Python program to print all
[1, 2] [1, 3] [2, 3]5
from
itertools
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]0
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]1
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]2
[2, 1] [2, 3] [1, 3]1
[2, 1] [2, 3] [1, 3]2
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]5
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]6
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]7
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]8
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]9
[1, 2] [1, 3] [2, 3]0
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]9
[1, 2] [1, 3] [2, 3]2
[1, 1] [1, 2] [1, 3] [2, 2] [2, 3] [3, 3]1
[1, 2] [1, 3] [2, 3]0
[1, 1] [1, 2] [1, 3] [2, 2] [2, 3] [3, 3]3
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]2
[1, 2] [1, 3] [2, 3]5
[1, 2] [1, 3] [2, 3]6
[1, 2] [1, 3] [2, 3]7
[1, 2] [1, 3] [2, 3]8
[1, 2] [1, 3] [2, 3]9
[1, 2] [1, 3] [2, 3]0
[1, 2] [1, 3] [2, 3]1
[1, 2] [1, 3] [2, 3]2
[1, 2] [1, 3] [2, 3]3
Output:
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]
It generates nCr * r! permutations if the length of the input sequence is n and the input parameter is r.
Combination
This method takes a list and an input r as an input and return an object list of tuples which contain all possible combination of length r in a list form.
Python3
# A Python program to print all
# A Python program to print all
5
from
itertools
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]0
# A Python program to print all
9[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]2
# permutations using library function
1
# permutations using library function
2
# permutations using library function
3
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]6
# permutations using library function
5[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]8
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]9
[1, 2] [1, 3] [2, 3]0
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]9
[1, 2] [1, 3] [2, 3]2
[1, 1] [1, 2] [1, 3] [2, 2] [2, 3] [3, 3]1
[1, 2] [1, 3] [2, 3]0
from
3[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]2
from
5
[1, 2] [1, 3] [2, 3]6
[1, 2] [1, 3] [2, 3]7
[1, 2] [1, 3] [2, 3]8
[1, 2] [1, 3] [2, 3]9
itertools
0[1, 2] [1, 3] [2, 3]1
[1, 2] [1, 3] [2, 3]2
itertools
3Output:
[1, 2] [1, 3] [2, 3]
1. Combinations are emitted in lexicographic sort order of input. So, if the input list is sorted, the combination tuples will be produced in sorted order.
Python3
# A Python program to print all
itertools
5
from
itertools
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]0
itertools
9[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]2
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]01
[2, 1] [2, 3] [1, 3]2
# permutations using library function
3
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]6
# permutations using library function
5[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]8
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]9
[1, 2] [1, 3] [2, 3]0
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]9
[1, 2] [1, 3] [2, 3]2
[1, 1] [1, 2] [1, 3] [2, 2] [2, 3] [3, 3]1
[1, 2] [1, 3] [2, 3]0
[1, 1] [1, 2] [1, 3] [2, 2] [2, 3] [3, 3]3
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]2
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]15
[1, 2] [1, 3] [2, 3]6
[1, 2] [1, 3] [2, 3]7
[1, 2] [1, 3] [2, 3]8
[1, 2] [1, 3] [2, 3]9
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]20
[1, 2] [1, 3] [2, 3]1
[1, 2] [1, 3] [2, 3]2
itertools
3Output:
[1, 2] [1, 3] [2, 3]
2. Elements are treated as unique based on their position, not on their value. So if the input elements are unique, there will be no repeat values in each combination.
Python3
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]24
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]25
from
itertools
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]0
itertools
9[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]2
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]31
[2, 1] [2, 3] [1, 3]2
# permutations using library function
3
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]6
# permutations using library function
5[1, 2] [1, 3] [2, 3]0
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]9
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]8
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]9
[1, 2] [1, 3] [2, 3]2
[1, 1] [1, 2] [1, 3] [2, 2] [2, 3] [3, 3]1
[1, 2] [1, 3] [2, 3]0
[1, 1] [1, 2] [1, 3] [2, 2] [2, 3] [3, 3]3
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]2
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]15
[1, 2] [1, 3] [2, 3]6
[1, 2] [1, 3] [2, 3]7
[1, 2] [1, 3] [2, 3]8
[1, 2] [1, 3] [2, 3]9
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]20
[1, 2] [1, 3] [2, 3]1
[1, 2] [1, 3] [2, 3]2
itertools
3Output:
[2, 1] [2, 3] [1, 3]
3. If we want to make a combination of the same element to the same element then we use combinations_with_replacement.
Python3
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]24
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]55
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]56
from
itertools
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]0
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]60
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]2
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]62
# permutations using library function
3
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]6
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]65
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]8
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]9
[1, 2] [1, 3] [2, 3]0
[1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2]9
[1, 2] [1, 3] [2, 3]2
[1, 1] [1, 2] [1, 3] [2, 2] [2, 3] [3, 3]1
[1, 2] [1, 3] [2, 3]0
[1, 1] [1, 2] [1, 3] [2, 2] [2, 3] [3, 3]3