Programa de Python para encontrar el producto de un número dado de elementos consecutivos

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

Deja una respuesta

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