Python: suma de filas del producto de índice similar

Dada una array y una lista de elementos, para cada fila, extraiga la suma del producto de los elementos con la lista de argumentos.

Entrada : test_list = [[4, 5], [1, 5], [8, 2]], mul_list = [5, 2, 3]
Salida : [30, 15, 44]
Explicación : para la primera fila, (4 *5) + (5*2) = 30, como valor del 1er elemento de la lista de resultados. De esta manera se calcula cada elemento.

Entrada : test_list = [[4, 5, 8, 2]], mul_list = [5, 2, 3, 9]
Salida : [72]
Explicación : cálculo similar al método anterior. Solo 1 elemento como fila única.

Método n.º 1: Uso del bucle
Esta es una forma de fuerza bruta para resolver este problema. En esto, realizamos la iteración de cada fila y realizamos la suma requerida en el producto usando un enfoque de fuerza bruta usando bucle.

# Python3 code to demonstrate working of 
# Row Summation of Like Index Product
# Using loop
  
# initializing list
test_list = [[3, 4, 5], [1, 7, 5], [8, 1, 2]] 
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing mul list  
mul_list = [5, 2, 3]
  
# Using loop
res = []
for sub in test_list:
    sum = 0
    for idx, ele in enumerate(sub):
          
        # performing summation of product with list elements
        sum = sum + (ele * mul_list[idx])
      
    # adding each row sum
    res.append(sum)
  
# printing result 
print("List after multiplication : " + str(res))
Producción :

The original list is : [[3, 4, 5], [1, 7, 5], [8, 1, 2]]
List after multiplication : [38, 34, 48]

Método #2: Usarmap() + sum() + zip() + lambda
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, realizamos la tarea de realizar la suma usando sum(), zip() se usa para mapear la lista de multiplicación con valores de fila, y la lógica encapsulada y extendida a cada fila, y su elemento usando lambda y map().

# Python3 code to demonstrate working of 
# Row Summation of Like Index Product
# Using map() + sum() + zip() + lambda
  
# initializing list
test_list = [[3, 4, 5], [1, 7, 5], [8, 1, 2]] 
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing mul list  
mul_list = [5, 2, 3]
  
# Using map() + sum() + zip() + lambda
# Performing product in inner map, by zipping with elements list, and sum at outer map() used.
res = list(map(sum, (map(lambda ele: ([x * y for x, y in zip(
                              ele, mul_list)]), test_list))))
  
# printing result 
print("List after multiplication : " + str(res))
Producción :

The original list is : [[3, 4, 5], [1, 7, 5], [8, 1, 2]]
List after multiplication : [38, 34, 48]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *