I am very new to coding and I could really use some help with an assignment.
The goal is to write a function that accepts a list x and a integer n (as argument) and returns a new list r, where each elements are the average of the original and the surrounding 2n elements.
In addition: The interval 2n should never count beyond the list.
If the original list (argument x) is [1, 2, 6, 4, 5, 0, 1, 2] and n=1, the new list r should be
[1.5, 3.0, 4.0, 5.0, 3.0, 2.0, 1.0, 1.5]. As the iteration hits the first element in r, only(!) the average of that and the second should be calculated ((1+2)/2 = 1.5).
The code i’ve written so far is:
def smooth_b(x, n):
for i in range(len(x)): r.append(sum(x[i-n:i+n+1])/(2*n+1))
which only works for the elements were the interval stays between the borders in the original list x. The result I get so far is:
[0.0, 3.0, 4.0, 5.0, 3.0, 2.0, 1.0, 1.0].
This is, as I said, an assignment for my course, so I am not asking for it to be solved completely, but I am utterly stuck and could really use some guidance.
Thank you so much in advance!