Python: Найти среднее значение списка или списка списков

Оглавление

Введение

Вычисление среднего значения — одна из базовых математических операций в программировании. В Python существует несколько способов вычисления среднего, каждый из которых имеет свои преимущества и особенности.

Что такое среднее значение? Среднее арифметическое — это сумма всех элементов, разделенная на количество этих элементов. Математически это можно записать как:

среднее = (x1 + x2 + ... + xn) / n

Способы вычисления среднего

Наивный подход с использованием цикла

# Вычисление среднего с помощью цикла for
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]

sum_of_numbers = 0
count = 0

for number in numbers:
    sum_of_numbers += number
    count += 1

average = sum_of_numbers / count

print(average)  # Выводит: 5.0

Особенности подхода:

  • Максимальная прозрачность процесса

  • Показывает внутреннюю "кухню" вычисления среднего

  • Низкая производительность для больших списков

  • Используется как образовательный пример

Когда использовать:

  • Обучение программированию

  • Понимание логики вычисления среднего

  • Работа с небольшими списками

Использование встроенных функций sum() и len()

# Вычисление среднего с помощью sum() и len()
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
average = sum(numbers) / len(numbers)

print(average)  # Выводит: 5.0

Преимущества:

  • Лаконичность

  • Быстрота

  • Читаемость кода

  • Встроенные функции Python

Создание функции для вычисления среднего

def calculate_average(input_list):
    """
    Вычисляет среднее значение для списка чисел
    
    :param input_list: Список чисел
    :return: Среднее арифметическое
    """
    return sum(input_list) / len(input_list)

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(calculate_average(numbers))  # Выводит: 5.0

Преимущества функции:

  • Повторное использование кода

  • Возможность добавления проверок

  • Улучшение читаемости

Вычисление среднего с помощью NumPy

import numpy as np

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
average = np.mean(numbers)

print(average)  # Выводит: 5.0

Особенности NumPy:

  • Высокая производительность

  • Работа с многомерными массивами

  • Дополнительные статистические функции

  • Оптимизация для научных вычислений

Использование библиотеки statistics

from statistics import mean

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
average = mean(numbers)

print(average)  # Выводит: 5.0

Преимущества statistics:

  • Встроенная библиотека Python

  • Простота использования

  • Меньшая нагрузка, чем NumPy

  • Базовые статистические вычисления

Средние значения для списков списков

Использование zip() для вычисления средних

list_of_lists = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# Средние по столбцам
column_average = [sum(col) / len(col) for col in zip(*list_of_lists)]

# Средние по строкам
row_average = [sum(row) / len(row) for row in list_of_lists]

print("Средние по столбцам:", column_average)   # [4.0, 5.0, 6.0]
print("Средние по строкам:", row_average)       # [2.0, 5.0, 8.0]

Вычисление средних с помощью NumPy

import numpy as np

list_of_lists = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

array_lol = np.array(list_of_lists)

# Средние по столбцам
column_average = np.average(array_lol, axis=0)

# Средние по строкам
row_average = np.average(array_lol, axis=1)

print("Средние по столбцам:", column_average)   # [4. 5. 6.]
print("Средние по строкам:", row_average)       # [2. 5. 8.]

Заключение

Вычисление среднего в Python — простая, но важная операция. Выбор метода зависит от:

  • Размера данных

  • Требований к производительности

  • Наличия дополнительных библиотек

  • Сложности вычислений

Рекомендации:

  • Для простых задач используйте sum() / len()

  • Для научных вычислений — NumPy

  • Создавайте собственные функции для повторяющихся задач

  • Всегда думайте о читаемости и эффективности кода

Бонусный совет: Не забывайте обрабатывать краевые случаи, например, пустые списки или списки с нечисловыми значениями!

Last updated