Permutaciones de una cadena en Python

Manav Narula 30 enero 2023
  1. Utilice la función itertools.permutations() para devolver todas las permutaciones de una cadena en Python
  2. Cree una función definida por el usuario para devolver todas las permutaciones de una cadena en Python
Permutaciones de una cadena en Python

Por permutación, nos referimos al número total de reordenamientos posibles para un número dado de elementos de una manera única sin tener en cuenta el orden de reordenamiento.

Una cadena, como sabemos, puede considerarse como una colección de caracteres individuales.

En este artículo, intentaremos encontrar todas las posibles permutaciones para una cadena determinada.

Utilice la función itertools.permutations() para devolver todas las permutaciones de una cadena en Python

El módulo itertools se utiliza para crear y trabajar con diferentes objetos iterables. La función permutations() de este módulo puede devolver todos los arrays posibles para un conjunto de valores dado.
Devuelve un objeto de tipo itertools que contiene una tupla que contiene la posible disposición de los elementos. Podemos usar una lista para ver los elementos de este objeto. También podemos usar esta función con una cadena.

Por ejemplo,

from itertools import permutations

lst = list(permutations("day"))
print(lst)

Producción :

[('d', 'a', 'y'), ('d', 'y', 'a'), ('a', 'd', 'y'), ('a', 'y', 'd'), ('y', 'd', 'a'), ('y', 'a', 'd')]

Observe las tuplas creadas en la salida que contienen la disposición de los caracteres. Podemos cambiar esto a una lista de cadenas usando la función join () y el método de comprensión de listas.

Consulte el siguiente código.

from itertools import permutations

lst = ["".join(p) for p in permutations("day")]
print(lst)

Producción :

['day', 'dya', 'ady', 'ayd', 'yda', 'yad']

Combinamos los elementos de la tupla usando la función join() y usamos esto para cada tupla iterando a través de la lista.

Cree una función definida por el usuario para devolver todas las permutaciones de una cadena en Python

Podemos crear una función sencilla para encontrar todas las permutaciones de una cadena. Crearemos una función recursiva. En este método, solo intercambiaremos los elementos de la cadena una vez y volveremos a llamar a la función con la nueva disposición. Mostramos los arrays finales.

Implementamos la lógica anterior en el siguiente código.

def string_permutations(s, i, n):
    if i == n:
        print("".join(s))
    else:
        for j in range(i, n):
            s[i], s[j] = s[j], s[i]
            string_permutations(s, i + 1, n)
            s[i], s[j] = s[j], s[i]


a = "day"
x = len(a)
s = list(a)
print(permute(s, 0, x))

Producción :

day
dya
ady
ayd
yad
yda
None

Como puede ver, las posiciones inicial y final se especifican donde deseamos hacer los reordenamientos. La cadena también se pasa como una lista de caracteres. Para encontrar todas las permutaciones posibles, establecemos el inicio en 0 y el final como la longitud de la cadena.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Artículo relacionado - Python String