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.

Crear una nueva lista a partir de dos listas mediante multiplicación. Python

¡Buenos días!

Estoy tratando de generar una nueva lista a partir de dos listas, utilizando la operación de multiplicación. A continuación, te muestro paso a paso lo que he hecho:

import itertools
from itertools import product
import numpy as np
import pandas as pd

Parameter_list=[]

Parameter=[range(0,2,1),range(0,2,1)]
Parameter_list=list(itertools.product(*Parameter))
print(Parameter_list)

[(0, 0), (0, 1), (1, 0), (1, 1)]

Luego eliminé el primer valor, que básicamente es la matriz nula:

del Parameter_list[0]
print(Parameter_list)
[(0, 1), (1, 0), (1, 1)]

Continué creando las dos listas de parámetros:

Parameter_A=[range(1,2,1),range(3,6,2),range(10,20,10)]
Parameter_A=list(itertools.product(*Parameter_A))

Parameter_B=[range(0,2,1),range(4,6,2),range(10,20,10)]
Parameter_B=list(itertools.product(*Parameter_B))

print(Parameter_A)
print(Parameter_B)

[(1, 3, 10), (1, 5, 10)]
[(0, 4, 10), (1, 4, 10)]

Y combiné las listas:

comb=list(product(Parameter_A,Parameter_B))
print(comb)

[((1, 3, 10), (0, 4, 10)),
 ((1, 3, 10), (1, 4, 10)), 
 ((1, 5, 10), (0, 4, 10)), 
 ((1, 5, 10), (1, 4, 10))]

Hasta aquí no hay problema. Pero ahora estoy luchando por crear una nueva lista multiplicando la Lista de Parámetros con la lista comb. El resultado deseado es el siguiente:

[((0, 0, 0), (0, 4, 10)),
 ((0, 0, 0), (1, 4, 10)), 
 ((0, 0, 0), (0, 4, 10)), 
 ((0, 0, 0), (1, 4, 10)),
 ((1, 3, 10), (0, 0, 0)),
 ((1, 3, 10), (0, 0, 0)), 
 ((1, 5, 10), (0, 0, 0)), 
 ((1, 5, 10), (0, 0, 0)),
 ((1, 3, 10), (0, 4, 10)),
 ((1, 3, 10), (1, 4, 10)), 
 ((1, 5, 10), (0, 4, 10)), 
 ((1, 5, 10), (1, 4, 10))]

¿Alguien puede ayudarme? ¡Muchas gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para generar la lista deseada, puedes utilizar un bucle for anidado para iterar a través de ambas listas de parámetros y combinar cada tupla de parámetros con cada tupla de combinación:

    new_list = []
    for param in Lista_de_Parametros:
        for c in comb:
            new_list.append((param, c))
    print(new_list)
    

    Esto dará como resultado:

    [((0, 1), ((1, 3, 10), (0, 4, 10))),
     ((0, 1), ((1, 3, 10), (1, 4, 10))),
     ((0, 1), ((1, 5, 10), (0, 4, 10))),
     ((0, 1), ((1, 5, 10), (1, 4, 10))),
     ((1, 0), ((1, 3, 10), (0, 4, 10))),
     ((1, 0), ((1, 3, 10), (1, 4, 10))),
     ((1, 0), ((1, 5, 10), (0, 4, 10))),
     ((1, 0), ((1, 5, 10), (1, 4, 10))),
     ((1, 1), ((1, 3, 10), (0, 4, 10))),
     ((1, 1), ((1, 3, 10), (1, 4, 10))),
     ((1, 1), ((1, 5, 10), (0, 4, 10))),
     ((1, 1), ((1, 5, 10), (1, 4, 10)))]
    

Comments are closed.