es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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ón product(). Aquí está un ejemplo de código:

    from itertools import product
    
    input_list = [['l','b'],['e','d'],['s','t']]
    output_list = [''.join(word) for word in product(*input_list)]
    
    print(output_list)
    

    Salida:

    ['les', 'let', 'lds', 'ldt', 'bes', 'bet', 'bds', 'bdt']
    

    En este código, primero importamos la función product() del módulo itertools. Luego, definimos la lista de entrada como input_list.

    Para obtener todas las combinaciones posibles, usamos la sintaxis product(*input_list). Esto desempaqueta input_list y pasa cada sublista como un argumento separado a product(). Entonces, para una lista de entrada [[a,b],[c,d],[e,f]], esta sintaxis es equivalente a llamar a product([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étodo join() 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.

Comments are closed.