Если вы используете Python 3.4 или выше, вы можете использовать модуль statistics
:
from statistics import mean
average = mean(value[1] for value in array)
Или если вы используете версиюPython старше 3.4:
average = sum(value[1] for value in array) / len(array)
Оба этих решения используют приятную особенность Python, называемую выражением генератора.Цикл
value[1] for value in array
создает новую последовательность своевременно и эффективно использует память.См. PEP 289 - Выражения генератора .
Если вы используете Python 2 и суммируете целые числа, у нас будет целочисленное деление, которое будет усекать результат, например:
>>> 25 / 4
6
>>> 25 / float(4)
6.25
Чтобы гарантировать, что у нас нет целочисленного деления, мы можем установить начальное значение sum
равным float
значению 0.0
.Однако это также означает, что мы должны сделать выражение генератора явным образом с круглыми скобками, в противном случае это синтаксическая ошибка, и она менее привлекательна, как отмечено в комментариях:
average = sum((value[1] for value in array), 0.0) / len(array)
Вероятно, лучше использовать fsum
из math
модуля, который вернет float
:
from math import fsum
average = fsum(value[1] for value in array) / len(array)