+

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

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] = & gt; 15/5 = 3 Segment 2 - [2, 3, 4, 5, 6] = & gt; 20/5 = 4 Segment 3 - [3, 4, 5, 6, 7] = & gt; 25/5 = 5 and so on ..... 

Method # 1: Using List Comprehension

# Python code to find the average of each sequential segment

  
# Initialization List

Input = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 ,

12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 ]

  
# Define splits

splits = 5

 
# Find the average for each sequential segment

Output = [ sum ( Input [i: i + splits]) / splits

for i in range ( len ( Input ) - splits + 1 )]

  
# output n and printing

print (Output)

Exit:

[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 functions

# Python code to find the average of each sequential segment

  
# Import

from statistics import mean

from itertools import islice

  # Initialization list

Input = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 ,

12 , 13 , 14  , 15 , 16 , 17 , 18 , 19 , 20 ]

 
# Find the average for each consecutive segment

zip_list = zip ( * (islice ( Input , i, None ) for i in range ( 5 )))

Output = list ( map (mean, zip_list))

 
# output to print

print (Output)

Exit:

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

Get Solution for free from DataCamp guru