Genera todas las permutaciones de un conjunto en Python

La permutación es una disposición de objetos en un orden específico. El orden de disposición de los objetos es muy importante. El número de permutaciones en un conjunto de n elementos viene dado por n!. ¡Por ejemplo, hay 2! = 2*1 = 2 permutaciones de {1, 2}, a saber, {1, 2} y {2, 1}, ¡y 3! = 3*2*1 = 6 permutaciones de {1, 2, 3}, a saber, {1, 2, 3}, {1, 3, 2}, {2, 1, 3}, {2, 3, 1} , {3, 1, 2} y {3, 2, 1}.
 

Método 1 (retroceso) 
Podemos utilizar la solución recursiva basada en retroceso que se analiza aquí .
Método 2 
La idea es extraer todos los elementos uno por uno, colocarlos en la primera posición y repetir para la lista restante.
 

Python3

# Python function to print permutations of a given list
def permutation(lst):
 
    # If lst is empty then there are no permutations
    if len(lst) == 0:
        return []
 
    # If there is only one element in lst then, only
    # one permutation is possible
    if len(lst) == 1:
        return [lst]
 
    # Find the permutations for lst if there are
    # more than 1 characters
 
    l = [] # empty list that will store current permutation
 
    # Iterate the input(lst) and calculate the permutation
    for i in range(len(lst)):
       m = lst[i]
 
       # Extract lst[i] or m from the list.  remLst is
       # remaining list
       remLst = lst[:i] + lst[i+1:]
 
       # Generating all permutations where m is first
       # element
       for p in permutation(remLst):
           l.append([m] + p)
    return l
 
 
# Driver program to test above function
data = list('123')
for p in permutation(data):
    print (p)

Producción:

['1', '2', '3']
['1', '3', '2']
['2', '1', '3']
['2', '3', '1']
['3', '1', '2']
['3', '2', '1']

Método 3 (Función directa) 
Podemos hacerlo simplemente usando la función de permutación incorporada en la biblioteca itertools. Es la técnica más corta para encontrar la permutación.
 

Python3

from itertools import permutations
l = list(permutations(range(1, 4)))
print(l)

Producción:

[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)] 

Este artículo es una contribución de Arpit Agarwal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *