Better approach as @cachedmethod got improved

This commit is contained in:
Miroslav Stampar
2017-11-13 22:53:22 +01:00
parent 323f1285b6
commit 88df293a1a
3 changed files with 5 additions and 13 deletions

View File

@@ -2058,6 +2058,7 @@ def readXmlFile(xmlFile):
return retVal
@cachedmethod
def stdev(values):
"""
Computes standard deviation of a list of numbers.
@@ -2069,19 +2070,10 @@ def stdev(values):
if not values or len(values) < 2:
return None
key = (values[0], values[-1], len(values))
if kb.get("cache") and key in kb.cache.stdev:
retVal = kb.cache.stdev[key]
else:
avg = average(values)
_ = reduce(lambda x, y: x + pow((y or 0) - avg, 2), values, 0.0)
retVal = sqrt(_ / (len(values) - 1))
if kb.get("cache"):
kb.cache.stdev[key] = retVal
return retVal
return sqrt(_ / (len(values) - 1))
def average(values):
"""