def variance(collection, unbiased = True): """Return the variance of a collection of numbers. Examples: >>> variance([]) 0.0 >>> variance([1]) 0.0 >>> variance([1,1,1]) 0.0 >>> variance([1,2,3]) 1.0 >>> variance([1,2,3], unbiased = False) 0.66666666666666663 """ if not collection: return float(0) m = mean(collection) n = float(len(collection)) sq = [ pow(x-m, 2) for x in collection ] scale = 1/n if not unbiased or n == 1 else 1/(n-1) return scale*fsum(sq)
def mean(sequence): """Return the mean of an iterable numeric sequence (e.g., a list). Examples: >>> mean([1,2,3]) 2.0 >>> mean([]) 0 """ return fsum(sequence) / len(sequence) if sequence else 0