EDIT:
I added two other ways to get the average of a list (which are relevant only for Python 3.8+). Here is the comparison that I made:
import timeit
import statistics
import numpy as np
from functools import reduce
import pandas as pd
import math
LIST_RANGE = 10
NUMBERS_OF_TIMES_TO_TEST = 10000
l = list(range(LIST_RANGE))
def mean1():
return statistics.mean(l)
def mean2():
return sum(l) / len(l)
def mean3():
return np.mean(l)
def mean4():
return np.array(l).mean()
def mean5():
return reduce(lambda x, y: x + y / float(len(l)), l, 0)
def mean6():
return pd.Series(l).mean()
def mean7():
return statistics.fmean(l)
def mean8():
return math.fsum(l) / len(l)
for func in [mean1, mean2, mean3, mean4, mean5, mean6, mean7, mean8 ]:
print(f"{func.__name__} took: ", timeit.timeit(stmt=func, number=NUMBERS_OF_TIMES_TO_TEST))
These are the results I got:
mean1 took: 0.09751558300000002
mean2 took: 0.005496791999999973
mean3 took: 0.07754683299999998
mean4 took: 0.055743208000000044
mean5 took: 0.018134082999999968
mean6 took: 0.6663848750000001
mean7 took: 0.004305374999999945
mean8 took: 0.003203333000000086
Interesting! looks like math.fsum(l) / len(l)
is the fastest way, then statistics.fmean(l)
, and only then sum(l) / len(l)
. Nice!
Thank you @Asclepius for showing me these two other ways!
OLD ANSWER:
In terms of efficiency and speed, these are the results that I got testing the other answers:
# test mean caculation
import timeit
import statistics
import numpy as np
from functools import reduce
import pandas as pd
LIST_RANGE = 10
NUMBERS_OF_TIMES_TO_TEST = 10000
l = list(range(LIST_RANGE))
def mean1():
return statistics.mean(l)
def mean2():
return sum(l) / len(l)
def mean3():
return np.mean(l)
def mean4():
return np.array(l).mean()
def mean5():
return reduce(lambda x, y: x + y / float(len(l)), l, 0)
def mean6():
return pd.Series(l).mean()
for func in [mean1, mean2, mean3, mean4, mean5, mean6]:
print(f"{func.__name__} took: ", timeit.timeit(stmt=func, number=NUMBERS_OF_TIMES_TO_TEST))
and the results:
mean1 took: 0.17030245899968577
mean2 took: 0.002183011999932205
mean3 took: 0.09744236000005913
mean4 took: 0.07070840100004716
mean5 took: 0.022754742999950395
mean6 took: 1.6689282460001778
so clearly the winner is:
sum(l) / len(l)
В этой статье мы рассмотрим различные способы найти среднее значение списка в списке Python. Среднее значение – это значение, которое представляет весь набор элементов данных или элементов.
Формула: Среднее значение = сумма чисел / общее количество.
Содержание
- Методы поиска среднего значения списка
- Функция mean()
- Использование функции sum()
- 3. Использование reduce() и lambda()
- Функция operator.add() для поиска среднего значения списка
- Метод NumPy average() для вычисления среднего значения списка
Методы поиска среднего значения списка
Для вычисления среднего значения списка в Python можно использовать любой из следующих методов:
- Функция mean();
- Встроенный метод sum();
- Методы lambda() и reduce();
- Метод operator.add().
Функция mean()
Python 3 имеет модуль статистики, который содержит встроенную функцию для вычисления среднего числа. Функция statistics.mean() используется для вычисления среднего входного значения или набора данных.
Функция mean() принимает список, кортеж или набор данных, содержащий числовые значения, в качестве параметра и возвращает среднее значение элементов данных.
Синтаксис:
mean(data-set/input-values)
Пример:
from statistics import mean inp_lst = [12, 45, 78, 36, 45, 237.11, -1, 88] list_avg = mean(inp_lst) print("Average value of the list:n") print(list_avg) print("Average value of the list with precision upto 3 decimal value:n") print(round(list_avg,3))
В приведенном выше фрагменте кода мы использовали метод statistics.round() для округления выходного среднего до определенного десятичного значения.
Синтаксис:
statistics.round(value, precision value)
Вывод:
Average value of the list: 67.51375 Average value of the list with precision upto 3 decimal value: 67.514
Использование функции sum()
Функция statistics.sum() также может использоваться для поиска среднего значения данных в списке Python.
Функция statistics.len() используется для вычисления длины списка, т.е. количества элементов данных, присутствующих в списке.
Синтаксис:
len(input-list)
Кроме того, функция statistics.sum() используется для вычисления суммы всех элементов данных в списке.
Синтаксис:
sum(input-list)
Примечание: среднее значение = (сумма) / (количество).
Пример:
from statistics import mean inp_lst = [12, 45, 78, 36, 45, 237.11, -1, 88] sum_lst = sum(inp_lst) lst_avg = sum_lst/len(inp_lst) print("Average value of the list:n") print(lst_avg) print("Average value of the list with precision upto 3 decimal value:n") print(round(lst_avg,3))
Вывод:
Average value of the list: 67.51375 Average value of the list with precision upto 3 decimal value: 67.514
3. Использование reduce() и lambda()
Мы можем использовать функцию reduce() вместе с функцией lambda().
Функция reduce() в основном используется для применения определенной (входной) функции к набору элементов, переданных в функцию.
Синтаксис:
reduce(function,input-list/sequence)
- Первоначально функция reduce() применяет переданную функцию к первым двум последовательным элементам и возвращает результат.
- Далее мы применяем ту же функцию к результату, полученному на предыдущем шаге, и к элементу, следующему за вторым элементом.
- Этот процесс продолжается, пока не дойдет до конца списка.
- Наконец, результат возвращается на терминал или экран в качестве вывода.
Функция lambda() используется для создания и формирования анонимных функций, то есть функции без имени или подписи.
Синтаксис:
lambda arguments:function
Пример:
from functools import reduce inp_lst = [12, 45, 78, 36, 45, 237.11, -1, 88] lst_len= len(inp_lst) lst_avg = reduce(lambda x, y: x + y, inp_lst) /lst_len print("Average value of the list:n") print(lst_avg) print("Average value of the list with precision upto 3 decimal value:n") print(round(lst_avg,3))
Вывод:
Average value of the list: 67.51375 Average value of the list with precision upto 3 decimal value: 67.514
Функция operator.add() для поиска среднего значения списка
Модуль operator.add() содержит различные функции для эффективного выполнения основных вычислений и операций.
Функцию operator.add() можно использовать для вычисления суммы всех значений данных, присутствующих в списке, с помощью функции reduce().
Синтаксис:
operator.add(value1, value2)
Примечание: среднее значение = (сумма) / (длина или количество элементов)
Пример:
from functools import reduce import operator inp_lst = [12, 45, 78, 36, 45, 237.11, -1, 88] lst_len = len(inp_lst) lst_avg = reduce(operator.add, inp_lst) /lst_len print("Average value of the list:n") print(lst_avg) print("Average value of the list with precision upto 3 decimal value:n") print(round(lst_avg,3))
Вывод:
Average value of the list: 67.51375 Average value of the list with precision upto 3 decimal value: 67.514
Метод NumPy average() для вычисления среднего значения списка
Модуль NumPy имеет встроенную функцию для вычисления среднего значения элементов данных, присутствующих в наборе данных или списке.
Метод numpy.average() используется для вычисления среднего значения входного списка.
Пример:
import numpy inp_lst = [12, 45, 78, 36, 45, 237.11, -1, 88] lst_avg = numpy.average(inp_lst) print("Average value of the list:n") print(lst_avg) print("Average value of the list with precision upto 3 decimal value:n") print(round(lst_avg,3))
Вывод:
Average value of the list: 67.51375 Average value of the list with precision upto 3 decimal value: 67.514
В этом руководстве мы обсудим, как вычислить среднее значение списка в Python.
Среднее значение списка определяется как сумма элементов, присутствующих в списке, деленная на количество элементов, присутствующих в списке.
Здесь мы будем использовать три разных подхода для вычисления среднего числа элементов, представленных в списке, с помощью Python.
- Использование sum().
- Использование reduce().
- Использование mean().
Итак, приступим …
Использование sum()
В первом методе мы используем sum() и len() для вычисления среднего значения.
Следующая программа иллюстрирует нам это:
# Python program to get average of a list def calc_average(lst): return sum(lst) / len(lst) lst = [24, 19, 35, 46, 75, 29, 30, 18] average = calc_average(lst) # Printing the average value of the list print("The average of the list is ", round(average, 3))
Вывод:
The average of the list is 34.5
Объяснение:
Пришло время взглянуть на то, что мы сделали в вышеуказанной программе:
- На первом этапе мы создали функцию, которая принимает список в качестве параметра, а затем возвращает среднее значение с помощью sum() и len(). Мы знаем, что sum() используется для вычисления суммы элементов, а len() сообщает нам длину списка.
- После этого мы инициализировали список, среднее значение которого мы хотим вычислить.
- На следующем шаге мы передали этот список в качестве параметра нашей функции.
- Наконец, мы распечатали полученное значение.
В следующей программе мы увидим, как reduce() может помочь нам сделать то же самое.
Используя reduce()
Программа, представленная ниже, показывает, как это можно сделать.
# Python program to obtain the average of a list # Using reduce() and lambda from functools import reduce def calc_average(lst): return reduce(lambda a, b: a + b, lst) / len(lst) #initializing the list lst = [24, 19, 35, 46, 75, 29, 30, 18] average = calc_average(lst) # Printing average of the list print("The Average of the list is ", round(average, 2))
Вывод:
The average of the list is 34.5
Объяснение:
Давайте разберемся, что мы здесь сделали:
- На первом этапе мы импортировали функцию calc_average, чтобы использовать ее в нашей программе для вычисления среднего числа элементов.
- Теперь мы создали функцию calc_average, которая принимает список в качестве параметра и использует лямбда (точный способ написания функций в python) внутри сокращения для вычисления среднего значения.
- После этого мы инициализировали, чье среднее значение мы хотим вычислить.
- На следующем шаге мы передали этот список в качестве параметра нашей функции.
- Наконец, мы распечатали полученное значение.
В последней программе мы узнаем, как использовать mean() для вычисления среднего значения списка.
Использование mean()
Следующая программа показывает, как это можно сделать:
# Python program to obtain the average of a list # Using mean() from statistics import mean def calc_average(lst): return mean(lst) lst = [24, 19, 35, 46, 75, 29, 30, 18] average = calc_average(lst) # Printing the average of the list print("The average of the list is ", round(average, 2))
Вывод:
The average of the list is 34.5
Объяснение:
- На первом этапе мы импортировали среднее значение из статистики, чтобы использовать его в нашей программе для вычисления среднего значения элементов.
- Теперь мы создали функцию calc_average, которая принимает список в качестве параметра и использует mean() для вычисления среднего значения.
- После этого мы инициализировали, чье среднее значение мы хотим вычислить.
- На следующем шаге мы передали этот список в качестве параметра нашей функции.
- Наконец, мы распечатали полученное значение.
Вывод
В этом руководстве мы изучили различные методы вычисления среднего числа элементов, представленных в списке, с помощью Python.
Изучаю Python вместе с вами, читаю, собираю и записываю информацию опытных программистов.
Given a List. The task is to find the sum and average of the list. The average of the list is defined as the sum of the elements divided by the number of elements.
Examples:
Input: [4, 5, 1, 2, 9, 7, 10, 8] Output: sum = 46 average = 5.75 Input: [15, 9, 55, 41, 35, 20, 62, 49] Output: sum = 286 average = 35.75
Method 1: Naive method
In this method, we will iterate over the list of and will add each element to a variable count which stores the sum of the ith element and then dividing the sum with the total number of variables to find the average.
Example:
Python3
L
=
[
4
,
5
,
1
,
2
,
9
,
7
,
10
,
8
]
count
=
0
for
i
in
L:
count
+
=
i
avg
=
count
/
len
(L)
print
(
"sum = "
, count)
print
(
"average = "
, avg)
Output
sum = 46 average = 5.75
Time complexity: O(n)
Auxiliary Space: O(n), where n is length of list
Method 2: Using sum() method
sum() method returns the sum of the list passed as its argument. Then we will divide the sum by the len() method to find the average.
Example:
Python3
L
=
[
4
,
5
,
1
,
2
,
9
,
7
,
10
,
8
]
count
=
sum
(L)
avg
=
count
/
len
(L)
print
(
"sum = "
, count)
print
(
"average = "
, avg)
Output
sum = 46 average = 5.75
Time Complexity: O(n) where n is the number of elements in the list
Auxiliary Space: O(1), constant extra space is required
Method 3 : Using sum() and statistics.mean()
Python3
import
statistics
L
=
[
4
,
5
,
1
,
2
,
9
,
7
,
10
,
8
]
sum1
=
sum
(L)
avg
=
statistics.mean(L)
print
(
"sum = "
, sum1)
print
(
"average = "
, avg)
Output
sum = 46 average = 5.75
method 4: using NumPy module functions sum() and average()
Python3
import
numpy as np
L
=
[
4
,
5
,
1
,
2
,
9
,
7
,
10
,
8
]
sum_
=
np.
sum
(L)
avg
=
np.average(L)
print
(
"sum = "
, sum_)
print
(
"average = "
, avg)
Output
sum = 46 average = 5.75
Time complexity: O(n)
Auxiliary Space: O(n)
Method 5: Using Recursion
The step-by-step approach of the program:
- Define a recursive function sum_avg_list with parameters lst and n that takes a list and its length as input.
- If the length n of the list is 0, return (0, 0) to indicate that the sum and average of the list is 0.
- If n is not 0, call the sum_avg_list function recursively with lst and n-1 as inputs. This will calculate the sum and average of the elements from 0 to n-1 in the list.
- Store the result of the recursive call in the variables sum and avg.
- Add the n-1th element of the list to the sum.
- Increment the avg by 1.
- Return the sum and avg.
- Define another function avg_list that takes a list as input and calls the sum_avg_list function to calculate the sum and average.
- Store the result of the sum_avg_list function in variables sum and avg.
- Divide sum by avg and return the result as the average of the list.
- Call the avg_list function with two example lists and print the results.
- The program outputs the sum and average of the two lists.
Python3
def
sum_avg_list(lst, n):
if
n
=
=
0
:
return
(
0
,
0
)
else
:
sum
, avg
=
sum_avg_list(lst, n
-
1
)
return
(
sum
+
lst[n
-
1
], avg
+
1
)
def
avg_list(lst):
sum
, avg
=
sum_avg_list(lst,
len
(lst))
return
sum
/
avg
lst
=
[
4
,
5
,
1
,
2
,
9
,
7
,
10
,
8
]
print
(
"Sum of the list: "
, sum_avg_list(lst,
len
(lst))[
0
])
print
(
"Average of the list: "
, avg_list(lst))
lst
=
[
15
,
9
,
55
,
41
,
35
,
20
,
62
,
49
]
print
(
"Sum of the list: "
, sum_avg_list(lst,
len
(lst))[
0
])
print
(
"Average of the list: "
, avg_list(lst))
Output
Sum of the list: 46 Average of the list: 5.75 Sum of the list: 286 Average of the list: 35.75
Time complexity: O(n) where n is the length of the list.
Auxiliary space: O(n)
Method 6: using the built-in functions reduce() and lambda
Import the reduce function from the functools module. This function is used to reduce a sequence of values to a single value by applying a given function to each element in the sequence.
Define a lambda function that takes two arguments x and y and returns their sum x + y. This will be used by the reduce function to sum the elements of the list.
Use the reduce function with the lambda function and the list L as arguments to obtain the sum of the elements in the list. Store this value in a variable count.
Divide the value of count by the length of the list L using the len() function to obtain the average value. Store this value in a variable avg.
Print the value of count and avg.
Python3
from
functools
import
reduce
L
=
[
4
,
5
,
1
,
2
,
9
,
7
,
10
,
8
]
count
=
reduce
(
lambda
x, y: x
+
y, L)
avg
=
count
/
len
(L)
print
(
"sum = "
, count)
print
(
"average = "
, avg)
Output
sum = 46 average = 5.75
Time complexity: O(n) for iterating through the list once, and O(n) for reducing the list to a single value, resulting in O(n) overall.
Auxiliary space: O(1) as we are only using a constant amount of extra space to store the variables count and avg.
Method 7: using only the built-in functions sum() and len():
- Create a list L with the given elements.
- Use the built-in function sum() to find the sum of all the elements in the list L and store it in a variable named count.
- Use the built-in function len() to find the number of elements in the list L.
- Divide the value of count by the length of the list L to find the average of the elements in the list L and store it in a variable named avg.
- Print the values of count and avg using the print() function.
Python3
L
=
[
4
,
5
,
1
,
2
,
9
,
7
,
10
,
8
]
count
=
sum
(L)
avg
=
count
/
len
(L)
print
(
"sum = "
, count)
print
(
"average = "
, avg)
Output
sum = 46 average = 5.75
Time complexity: O(n), where n is the length of the list L. Both sum() and len() functions take O(n) time in the worst case.
Auxiliary space: O(1), since we only use a constant amount of extra space for the count and avg variables.
Last Updated :
31 Mar, 2023
Like Article
Save Article
В этом посте мы обсудим, как рассчитать среднее значение всех элементов в списке Python.
1. Использование sum()
функция
Предпочтительный и быстрый способ получить сумму последовательности целых чисел с помощью sum()
функция. Затем вы можете рассчитать среднее значение путем деления общей суммы на длину списка. Это показано ниже:
if __name__ == ‘__main__’: ints = [1, 2, 3, 4, 5] avg = sum(ints) / len(ints) print(avg) # 3.0 |
Скачать Выполнить код
Чтобы получить значения с плавающей запятой с повышенной точностью, рассмотрите возможность использования math.fsum()
.
import math if __name__ == ‘__main__’: ints = [1, 2, 3, 4, 5] avg = math.fsum(ints) / len(ints) print(avg) # 3.0 |
Скачать Выполнить код
2. Использование операции уменьшения
Вы также можете вычислить среднее значение с помощью функции сокращения. Это будет переведено в простой код ниже:
from functools import reduce if __name__ == ‘__main__’: ints = [1, 2, 3, 4, 5] avg = reduce(lambda x, y: x + y, ints) / len(ints) print(avg) # 3.0 |
Скачать Выполнить код
3. Использование NumPy
Если вы уже используете NumPy, вы можете использовать numpy.mean()
Функция, которая вычисляет и возвращает среднее арифметическое.
import numpy as np if __name__ == ‘__main__’: ints = [1, 2, 3, 4, 5] avg = np.mean(ints) print(avg) # 3.0 |
4. Использование statistics
модуль
The statistics
Модуль предоставляет несколько функций для расчета математической статистики числовых данных. Он был представлен в версии 3.4, и вы можете использовать mean()
Функция для получения среднего арифметического данных.
from statistics import mean if __name__ == ‘__main__’: ints = [1, 2, 3, 4, 5] avg = mean(ints) print(avg) # 3.0 |
Скачать Выполнить код
Это все, что касается нахождения среднего значения всех элементов в списке в Python.
Спасибо за чтение.
Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.
Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂