Python | Average of each n-length consecutive segment in a list

Given a list, the task is to find the average of each n-length consecutive segment where each segment contains n elements.

Example:

```Input : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20]

Output: [3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18]

Explanation:
Segment 1 - [1, 2, 3, 4, 5] => 15/5 = 3
Segment 2 - [2, 3, 4, 5, 6] => 20/5 = 4
Segment 3 - [3, 4, 5, 6, 7] => 25/5 = 5
and so on..... ```

Method #1: Using list comprehension

 `# Python code to find average of each consecutive segment ` ` `  `# List initialisation ` `Input` `=` `[``1``, ``2``, ``3``, ``4``, ``5``, ``6``, ``7``, ``8``, ``9``, ``10``, ``11``, ` `         ``12``, ``13``, ``14``, ``15``, ``16``, ``17``, ``18``, ``19``, ``20``] ` ` `  `# Defining Splits ` `splits ``=` `5` ` `  `# Finding average of each consecutive segment ` `Output ``=` `[``sum``(``Input``[i:i ``+` `splits])``/``splits ` `          ``for` `i ``in` `range``(``len``(``Input``) ``-` `splits ``+` `1``)] ` ` `  `# printing output ` `print``(Output) `

Output:

[3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0]

Method #2: Using `mean `function

 `# Python code to find average of each consecutive segment ` ` `  `# Importing ` `from` `statistics ``import` `mean ` `from` `itertools ``import` `islice ` ` `  `# List initialisation ` `Input` `=` `[``1``, ``2``, ``3``, ``4``, ``5``, ``6``, ``7``, ``8``, ``9``, ``10``, ``11``, ` `         ``12``, ``13``, ``14``, ``15``, ``16``, ``17``, ``18``, ``19``, ``20``] ` ` `  `# Finding average of each consecutive segment ` `zip_list ``=` `zip``(``*``(islice(``Input``, i, ``None``) ``for` `i ``in` `range``(``5``))) ` `Output ``=` `list``(``map``(mean, zip_list)) ` ` `  `# printing output ` `print``(Output) `

Output:

[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]

My Personal Notes arrow_drop_up

Article Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.