def moving_average(iterable, n=3):
# moving_average([40, 30, 50, 46, 39, 44]) --> 40.0 42.0 45.0 43.0
# http://en.wikipedia.org/wiki/Moving_average
- n = float(n)
it = iter(iterable)
- d = deque(itertools.islice(it, n))
+ d = deque(itertools.islice(it, n-1))
+ d.appendleft(0)
s = sum(d)
- if len(d) == n:
- yield s / n
for elem in it:
s += elem - d.popleft()
d.append(elem)
- yield s / n
+ yield s / float(n)
The :meth:`rotate` method provides a way to implement :class:`deque` slicing and
deletion. For example, a pure python implementation of ``del d[n]`` relies on