0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Распространенный вариант использования циклов со списками -<strong>агрегация</strong>. Агрегацией называются любые вычисления, которые строятся на основе всего набора данных: например, поиск максимального значения, среднего, суммы и так далее. Процесс агрегации не требует от программиста знания нового синтаксиса, но влияет на алгоритм решения задач. Поэтому имеет смысл рассмотреть его отдельно. Начнем с поиска максимального значения:</p>
1
<p>Распространенный вариант использования циклов со списками -<strong>агрегация</strong>. Агрегацией называются любые вычисления, которые строятся на основе всего набора данных: например, поиск максимального значения, среднего, суммы и так далее. Процесс агрегации не требует от программиста знания нового синтаксиса, но влияет на алгоритм решения задач. Поэтому имеет смысл рассмотреть его отдельно. Начнем с поиска максимального значения:</p>
2
<p>В этом примере агрегации мы видим<strong>вычисление</strong>. Оно включает в себя сравнение всех элементов для поиска одного, которое станет результатом этой операции.</p>
2
<p>В этом примере агрегации мы видим<strong>вычисление</strong>. Оно включает в себя сравнение всех элементов для поиска одного, которое станет результатом этой операции.</p>
3
<p>Обратите внимание, что начальным значением max взят первый элемент, а не 0 или любое другое число. Ведь может оказаться так, что все числа в списке меньше 0, и тогда мы получим неверный ответ.</p>
3
<p>Обратите внимание, что начальным значением max взят первый элемент, а не 0 или любое другое число. Ведь может оказаться так, что все числа в списке меньше 0, и тогда мы получим неверный ответ.</p>
4
<h2>Нейтральный элемент</h2>
4
<h2>Нейтральный элемент</h2>
5
<p>Теперь рассмотрим поиск суммы:</p>
5
<p>Теперь рассмотрим поиск суммы:</p>
6
<p>Алгоритм поиска суммы значительно проще, но обладает парой важных нюансов.</p>
6
<p>Алгоритм поиска суммы значительно проще, но обладает парой важных нюансов.</p>
7
<p>Чему равна сумма элементов пустого списка? С точки зрения математики такая сумма равна 0, что совпадает со здравым смыслом. Если у нас нет яблок, значит у нас есть 0 яблок. Другими словами, количество яблок равно нулю. Функции в программировании работают по такой же логике.</p>
7
<p>Чему равна сумма элементов пустого списка? С точки зрения математики такая сумма равна 0, что совпадает со здравым смыслом. Если у нас нет яблок, значит у нас есть 0 яблок. Другими словами, количество яблок равно нулю. Функции в программировании работают по такой же логике.</p>
8
<p>Второй момент связан с начальным элементом суммы. У переменной sum есть начальное значение равное 0. Зачем вообще задавать значение? Любая повторяющаяся операция начинается с какого-то значения. Нельзя просто так объявить переменную и начать с ней работать внутри цикла. Это приведет к неверному результату:</p>
8
<p>Второй момент связан с начальным элементом суммы. У переменной sum есть начальное значение равное 0. Зачем вообще задавать значение? Любая повторяющаяся операция начинается с какого-то значения. Нельзя просто так объявить переменную и начать с ней работать внутри цикла. Это приведет к неверному результату:</p>
9
<p>В результате такого вызова внутри будет ошибка TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'. Она возникает из-за попытки сложить 2 и None. Значит какое-то значение все же нужно. В коде выше выбран 0, потому что все остальные варианты приведут к неверному результату. Если начальное значение будет равно 1, то результат получится на единицу больше, чем нужно.</p>
9
<p>В результате такого вызова внутри будет ошибка TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'. Она возникает из-за попытки сложить 2 и None. Значит какое-то значение все же нужно. В коде выше выбран 0, потому что все остальные варианты приведут к неверному результату. Если начальное значение будет равно 1, то результат получится на единицу больше, чем нужно.</p>
10
<p>В математике существует понятие<strong><a>нейтральный элемент бинарной операции</a></strong>- это элемент, который ничего не меняет в результате его использования. Другими словами, сложение любого числа с нулем всегда дает это же число. Тогда любую сумму, например 3 + 2 + 8, можно вычислить как 0 + 3 + 2 + 8, чем мы и пользуемся в нашем коде.</p>
10
<p>В математике существует понятие<strong><a>нейтральный элемент бинарной операции</a></strong>- это элемент, который ничего не меняет в результате его использования. Другими словами, сложение любого числа с нулем всегда дает это же число. Тогда любую сумму, например 3 + 2 + 8, можно вычислить как 0 + 3 + 2 + 8, чем мы и пользуемся в нашем коде.</p>
11
<p>Нейтральный элемент - это важная часть любой агрегирующей операции. Именно с него начинается сам процесс агрегации. В случае сложения - это 0, в случае умножения - 1. Даже у конкатенации есть нейтральный элемент - это пустая строка: '' + 'one' будет 'one'.</p>
11
<p>Нейтральный элемент - это важная часть любой агрегирующей операции. Именно с него начинается сам процесс агрегации. В случае сложения - это 0, в случае умножения - 1. Даже у конкатенации есть нейтральный элемент - это пустая строка: '' + 'one' будет 'one'.</p>
12
<p>Агрегация далеко не всегда означает, что коллекция элементов сводится к некоторому простому значению. Результатом агрегации может быть даже сложная структура - например, список. Подобные примеры часто встречаются в реальной жизни. Самый простой пример - это список уникальных слов в тексте.</p>
12
<p>Агрегация далеко не всегда означает, что коллекция элементов сводится к некоторому простому значению. Результатом агрегации может быть даже сложная структура - например, список. Подобные примеры часто встречаются в реальной жизни. Самый простой пример - это список уникальных слов в тексте.</p>
13
<h2>Выводы</h2>
13
<h2>Выводы</h2>
14
<p>Агрегация - это вычисления на основе всего набора данных, такие как поиск максимального значения, среднего, суммы и т.д.</p>
14
<p>Агрегация - это вычисления на основе всего набора данных, такие как поиск максимального значения, среднего, суммы и т.д.</p>
15
<p>При агрегации может использоваться нейтральный элемент. Он не изменяет результат операции. Нейтральный элемент операции сложения - это 0. Для умножения - 1. Для конкатенации строк: пустая строка ''.</p>
15
<p>При агрегации может использоваться нейтральный элемент. Он не изменяет результат операции. Нейтральный элемент операции сложения - это 0. Для умножения - 1. Для конкатенации строк: пустая строка ''.</p>
16
<p>Результатом агрегации может быть не только простое значение, но и сложная структура, например, список уникальных слов в тексте.</p>
16
<p>Результатом агрегации может быть не только простое значение, но и сложная структура, например, список уникальных слов в тексте.</p>