From e56129d0fa0f08a08dd3e0d1d23ba958c88e0dc3 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Mon, 12 Nov 2007 00:49:57 -0600 Subject: [PATCH] Make average() iterable-aware. --- src/__init__.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/__init__.py b/src/__init__.py index 4403bb6..4201f1d 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -1,3 +1,4 @@ +from __future__ import division import math import sys import operator @@ -313,8 +314,24 @@ def linear_combination(coefficients, vectors): -def average(sequence): - return general_sum(sequence)/float(len(sequence)) +def average(iterable): + """Return the average of the values in iterable. + + iterable may not be empty. + """ + it = iterable.__iter__() + + try: + sum = it.next() + count = 1 + except StopIteration: + raise ValueError, "empty average" + + for value in it: + sum += value + count += 1 + + return sum/count -- GitLab