Producto de lista de lista de letras [[a,b],[c,d],[a,n]]
Tengo una lista de posibles letras para cada letra en una palabra.. y quiero encontrar todas las palabras posibles.
Por ejemplo, la entrada es [[l, b], [e, d], [s, t]]
, esto representa una palabra de 3 letras donde la primera letra puede ser l o b, la segunda letra puede ser e o d y la tercera letra es s o t. Quiero que la salida sea el producto de estas listas [les, let, bet,… y así sucesivamente]. La lista puede ser de cualquier longitud, no sólo de tres. He intentado
res = list(map(prod, zip(test_list)))
Pero obtengo
[<itertools.product object at 0x0000024F65AEC600>, <itertools.product object at 0x0000024F65AEC640>, <itertools.product object at 0x0000024F65AEC680>, <itertools.product object at 0x0000024F65AEC6C0>]
He intentado
word1=list(product(letter[0],letter[1],letter[2]))
Funciona perfectamente, pero quiero que el código acepte cualquier longitud de lista.
davy.ai
Para resolver este problema para cualquier longitud de lista de entrada, se puede utilizar el operador
*
para desempaquetar la lista de letras posibles en la funciónproduct()
. Aquí está un ejemplo de código:Salida:
En este código, primero importamos la función
product()
del móduloitertools
. Luego, definimos la lista de entrada comoinput_list
.Para obtener todas las combinaciones posibles, usamos la sintaxis
product(*input_list)
. Esto desempaquetainput_list
y pasa cada sublista como un argumento separado aproduct()
. Entonces, para una lista de entrada[[a,b],[c,d],[e,f]]
, esta sintaxis es equivalente a llamar aproduct([a,b], [c,d], [e,f])
.La función
product()
devuelve un iterador de tuplas, donde cada tupla contiene una combinación posible de letras. Para convertir cada tupla en una cadena, usamos el métodojoin()
en una cadena vacía, que concatena todos los caracteres de la tupla en una sola cadena.Finalmente, almacenamos todas las cadenas resultantes en
output_list
y las imprimimos en la consola.