Lists and Records
Sum and Mean
Accumulate the total and count of a list of numbers in a single loop, then divide to get the mean. This is the building block for every aggregate function in later books.
By hand
Walk the list once: add each value to total and bump count by one.
After the loop, divide to produce mean.
naive.py
values = [5, 10, 15, 20, 25, 30, 35, 40]
total = 0
count = 0
for v in values:
total = total + v
count = count + 1
mean = total / count
print('RESULT:', round(mean, 10))
The Pythonic way
statistics.mean handles the accumulation internally and raises
StatisticsError on an empty list instead of a silent divide-by-zero.
The float() call normalises the return type for integer inputs.
library.py
import statistics
values = [5, 10, 15, 20, 25, 30, 35, 40]
mean = statistics.mean(values)
print('RESULT:', round(float(mean), 10))
RESULT: 22.5
Implementation notes
totalandcountstay as integers throughout the loop; the/operator produces a float at the final division step.statistics.meanreturnsintwhen the mean divides evenly (e.g.mean([1, 2, 3])→2) andfloatotherwise; wrapping withfloat()normalises the result to always be a float regardless of the data.