Related Articles
Python program to find product of given number of consecutive elements
• Last Updated : 02 Feb, 2021

Given a List, the task is to write a python program that can construct a list with products of consecutive elements for a given number of elements.

Input : test_list = [5, 6, 2, 1, 7, 5, 3], K = 3

Output : [60, 12, 14, 35, 105]

Explanation : 5 * 6 * 2 = 60, 6 * 2 * 1 = 12.. And so on.

Input : test_list = [5, 6, 2, 1, 7, 5, 3], K = 4

Output : [60, 84, 70, 105]

Explanation : 5 * 6 * 2 * 1 = 60, 6 * 2 * 1 * 7 = 84.. And so on.

Method 1 : Using list slicing and loop

In this, we perform task of getting K slice using list slicing and task of getting product is done by an external function call.

Example:

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

Output:

The original list is : [5, 6, 2, 1, 7, 5, 3]

Computed Products : [60, 12, 14, 35, 105]

Method 2 : Using generator, slicing, reduce() and mul operator

In this, generator is used to compute and return intermediate result. Task of getting sliced multiplication is done using inbuilt function reduce(), and mul operator.

Example:

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

Output:

The original list is : [5, 6, 2, 1, 7, 5, 3]

Computed Products : [60, 12, 14, 35, 105]

Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course

My Personal Notes arrow_drop_up