Cómo generar todas las permutaciones de una lista en Python
-
Usar
itertools.permutations
para generar todas las permutaciones de una lista en Python - Usar Recursión para generar todas las permutaciones de una lista en Python
Este tutorial discute los métodos para generar todas las permutaciones de una lista en Python.
Usar itertools.permutations
para generar todas las permutaciones de una lista en Python
Python proporciona una herramienta estándar de biblioteca para generar permutaciones: itertools.permutations
. El siguiente ejemplo muestra cómo usar esto para generar todas las permutaciones de una lista.
import itertools
inp_list = [4, 5, 6]
permutations = list(itertools.permutations(inp_list))
print(permutations)
Resultado:
[(4, 5, 6), (4, 6, 5), (5, 4, 6), (5, 6, 4), (6, 4, 5), (6, 5, 4)]
La longitud por defecto de la permutación se establece como la longitud de la lista de entrada. Sin embargo, podemos especificar la longitud de la permutación en la llamada a la función itertools.permutations
. El siguiente ejemplo ilustra esto.
import itertools
inp_list = [1, 2, 3]
permutations = list(itertools.permutations(inp_list, r=2))
print(permutations)
Resultado:
[(4, 5), (4, 6), (5, 4), (5, 6), (6, 4), (6, 5)]
El siguiente ejemplo ilustra cómo generar todas las permutaciones de todas las longitudes posibles de una lista dada.
import itertools
inp_list = [1, 2, 3]
permutations = []
for i in range(1, len(inp_list) + 1):
permutations.extend(list(itertools.permutations(inp_list, r=i)))
print(permutations)
Resultado:
[(4,), (5,), (6,), (4, 5), (4, 6), (5, 4), (5, 6), (6, 4), (6, 5), (4, 5, 6), (4, 6, 5), (5, 4, 6), (5, 6, 4), (6, 4, 5), (6, 5, 4)]
Usar Recursión para generar todas las permutaciones de una lista en Python
También podemos usar la recursión para generar todas las permutaciones de una lista en Python. El siguiente ejemplo ilustra esto.
def permutations(start, end=[]):
if len(start) == 0:
print(end)
else:
for i in range(len(start)):
permutations(start[:i] + start[i + 1 :], end + start[i : i + 1])
permutations([4, 5, 6])
Resultado:
[4, 5, 6]
[4, 6, 5]
[5, 4, 6]
[5, 6, 4]
[6, 4, 5]
[6, 5, 4]
Artículo relacionado - Python List
- Convertir un diccionario en una lista en Python
- Eliminar todas las apariciones de un elemento de una lista en Python
- Eliminar duplicados de una lista en Python
- Cómo obtener el promedio de una lista en Python
- ¿Cuál es la diferencia entre los métodos de lista que añaden y amplían
- Cómo convertir una lista en cadena en Python