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.

¿Cómo imprimir cada posible permutación de varias matrices de cadenas en Python?

Digamos que tengo los siguientes arrays de strings:

Background = {"Ocean"}
Body = {"Normal"}
Eyes = {"Big", "Small", "Monolid"}
Color = {"Yellow", "White", "Red Rose", "Turquoise", "Dark green", "Orange"}
Hands = {"None", "Robot", "Spider", "Bear"}
Extra = {"Empty", "Sand", "Dust", "Graffiti", "Aloe"}

Quiero imprimir una lista que contenga todas las posibles combinaciones de cada elemento mencionado en los arrays anteriores, siguiendo el orden en el que se establecieron estos arrays (es decir, comienza verificando Background, luego verifica Body, luego Eyes, luego Color, luego Hands y finaliza en Extra).

La primera combinación debería ser:

1. Ocean, Normal, Big, Yellow, None, Empty

La segunda combinación debería ser:

2. Ocean, Normal, Big, Yellow, None, Sand

Y así sucesivamente…

Se puede asumir que el elemento None es igual que Empty.

¿Cómo podría hacer eso?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para encontrar todas las posibles combinaciones de los elementos mencionados en los arreglos anteriores, podemos usar la función itertools.product() en Python. Así es como podemos hacerlo:

    import itertools
    
    Background = {"Ocean"}
    Body = {"Normal"}
    Eyes = {"Big", "Small", "Monolid"}
    Color = {"Yellow", "White", "Red Rose", "Turquoise", "Dark green", "Orange"}
    Hands = {"None", "Robot", "Spider", "Bear"}
    Extra = {"Empty", "Sand", "Dust", "Graffiti", "Aloe"}
    
    # Crear una lista que contenga todos los arreglos en el orden en el que queremos que se permuten
    arrays = [Background, Body, Eyes, Color, Hands, Extra]
    
    # Usar la función itertools.product() para encontrar todas las posibles combinaciones de los elementos en los arreglos
    permutations = list(itertools.product(*arrays))
    
    # Imprimir la lista de combinaciones
    for i, p in enumerate(permutations, start=1):
        # Reemplazar "None" con "Empty" en la combinación, si corresponde
        p = tuple("Empty" if x == "None" else x for x in p)
        print(f"{i}. {' '.join(p)}")
    

    La salida del código anterior será una lista de todas las posibles combinaciones de los elementos en los arreglos, en el orden especificado:

    1. Ocean Normal Big Yellow None Empty
    2. Ocean Normal Big Yellow None Sand
    3. Ocean Normal Big Yellow None Dust
    4. Ocean Normal Big Yellow None Graffiti
    5. Ocean Normal Big Yellow None Aloe
    6. Ocean Normal Big Yellow Robot Empty
    7. Ocean Normal Big Yellow Robot Sand
    8. Ocean Normal Big Yellow Robot Dust
    9. Ocean Normal Big Yellow Robot Graffiti
    10. Ocean Normal Big Yellow Robot Aloe
    11. Ocean Normal Big Yellow Spider Empty
    12. Ocean Normal Big Yellow Spider Sand
    13. Ocean Normal Big Yellow Spider Dust
    14. Ocean Normal Big Yellow Spider Graffiti
    15. Ocean Normal Big Yellow Spider Aloe
    16. Ocean Normal Big Yellow Bear Empty
    17. Ocean Normal Big Yellow Bear Sand
    18. Ocean Normal Big Yellow Bear Dust
    19. Ocean Normal Big Yellow Bear Graffiti
    20. Ocean Normal Big Yellow Bear Aloe
    21. Ocean Normal Big White None Empty
    22. Ocean Normal Big White None Sand
    23. Ocean Normal Big White None Dust
    

    Y así sucesivamente…

Comments are closed.