Itertool es un módulo proporcionado por Python para crear iteradores para un bucle eficiente. También proporciona varias características o funciones que funcionan con iteradores para producir iteradores complejos y ayudarnos a resolver problemas de manera fácil y eficiente en términos de tiempo y memoria. El módulo Itertools nos proporciona varias formas de manipular la secuencia que estamos atravesando. Los diferentes tipos de iteradores proporcionados por este módulo son:
- Iteradores infinitos
- Iteradores que terminan en la secuencia de entrada más corta
- iteradores combinatorios
Nota: Para obtener más información, consulte Python Itertools
Itertools.permutación()
La función Itertools.permutation() se incluye en los generadores combinatorios. Los generadores recursivos que se utilizan para simplificar construcciones combinatorias como permutaciones, combinaciones y productos cartesianos se denominan iteradores combinatorios. Tal como se entiende por la palabra “Permutación” se refiere a todas las combinaciones posibles en las que se puede ordenar o arreglar un conjunto o string. De manera similar, aquí el método itertool.permutations() nos proporciona todos los arreglos posibles que pueden existir para un iterador y se supone que todos los elementos son únicos en función de su posición y no por su valor o categoría. Todas estas permutaciones se proporcionan en orden lexicográfico. La función itertool.Sintaxis:
Permutations(iterator, r)
Ejemplo 1:-
Python3
from itertools import permutations a = "GeEK" # no length entered so default length # taken as 4(the length of string GeEK) p = permutations(a) # Print the obtained permutations for j in list(p): print(j)
Producción :-
('G', 'e', 'E', 'K') ('G', 'e', 'K', 'E') ('G', 'E', 'e', 'K') ('G', 'E', 'K', 'e') ('G', 'K', 'e', 'E') ('G', 'K', 'E', 'e') ('e', 'G', 'E', 'K') ('e', 'G', 'K', 'E') ('e', 'E', 'G', 'K') ('e', 'E', 'K', 'G') ('e', 'K', 'G', 'E') ('e', 'K', 'E', 'G') ('E', 'G', 'e', 'K') ('E', 'G', 'K', 'e') ('E', 'e', 'G', 'K') ('E', 'e', 'K', 'G') ('E', 'K', 'G', 'e') ('E', 'K', 'e', 'G') ('K', 'G', 'e', 'E') ('K', 'G', 'E', 'e') ('K', 'e', 'G', 'E') ('K', 'e', 'E', 'G') ('K', 'E', 'G', 'e') ('K', 'E', 'e', 'G')
Complejidad de tiempo: O(n!) donde n es el tamaño de la string.
Espacio auxiliar: O(n*n!)
Ejemplo 2:-
Python3
from itertools import permutations print ("All the permutations of the given list is:") print (list(permutations([1, 'geeks'], 2))) print() print ("All the permutations of the given string is:") print (list(permutations('AB'))) print() print ("All the permutations of the given container is:") print(list(permutations(range(3), 2)))
Producción:-
All the permutations of the given list is: [(1, 'geeks'), ('geeks', 1)] All the permutations of the given string is: [('A', 'B'), ('B', 'A')] All the permutations of the given container is: [(0, 1), (0, 2), (1, 0), (1, 2), (2, 0), (2, 1)]