Dada una Lista, la tarea es escribir un programa en Python que pueda construir una lista con productos de elementos consecutivos para un número dado de elementos.
Entrada: test_list = [5, 6, 2, 1, 7, 5, 3], K = 3
Salida: [60, 12, 14, 35, 105]
Explicación: 5 * 6 * 2 = 60, 6 * 2 * 1 = 12… Y así sucesivamente.
Entrada: test_list = [5, 6, 2, 1, 7, 5, 3], K = 4
Salida: [60, 84, 70, 105]
Explicación : 5 * 6 * 2 * 1 = 60, 6 * 2 * 1 * 7 = 84 .. Y así sucesivamente.
Método 1: usar el corte de lista y el bucle
En esto, realizamos la tarea de obtener el segmento K utilizando la división de listas y la tarea de obtener el producto se realiza mediante una llamada de función externa.
Ejemplo:
Python3
# getting product def prod(sub): res = 1 for ele in sub: res = ele * res return res # initializing lists test_list = [5, 6, 2, 1, 7, 5, 3] # printing original list print("The original list is : " + str(test_list)) # initializing K K = 3 res = [] for idx in range(len(test_list) - K + 1): # getting product using external function res.append(prod(test_list[idx: idx + K])) # printing result print("Computed Products : " + str(res))
Producción:
La lista original es: [5, 6, 2, 1, 7, 5, 3]
Productos calculados: [60, 12, 14, 35, 105]
Método 2: usar generador , rebanar , reduce() y operador mul
En esto, el generador se usa para calcular y devolver un resultado intermedio. La tarea de obtener la multiplicación por segmentos se realiza mediante la función incorporada reduce() y el operador mul.
Ejemplo:
Python3
from functools import reduce from operator import mul # generator function def sliced_prod(sub, K): for idx in range(len(sub) - K + 1): # slicing and returning intermediate product sliced = sub[idx: idx + K] yield reduce(mul, sliced) # generator function # initializing lists test_list = [5, 6, 2, 1, 7, 5, 3] # printing original list print("The original list is : " + str(test_list)) # initializing K K = 3 # calling fnc. res = list(sliced_prod(test_list, K)) # printing result print("Computed Products : " + str(res))
Producción:
La lista original es: [5, 6, 2, 1, 7, 5, 3]
Productos calculados: [60, 12, 14, 35, 105]
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