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))
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))
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