ЯдроКодаподготовка к экзаменам
Учебная платформа

Загружаем материалы

Подготавливаем материалы и навигацию по разделу.

Коллекции в задачах: список, массив или поток данных

Автор: · Обновлено

Список или массив хранит несколько значений под одним именем. Это удобно, когда в задаче есть набор оценок, температур, чисел, слов, результатов участников или координат.

В Python список создается с квадратными скобками:

scores = [5, 4, 3, 5, 4]
print(scores[0])
print(len(scores))

Индексация начинается с нуля: первый элемент имеет индекс 0, второй — индекс 1. Функция len возвращает количество элементов.

Перебор списка

Чаще всего список перебирают циклом:

numbers = [3, 8, 2, 10]
maximum = numbers[0]

for number in numbers:
    if number > maximum:
        maximum = number

print(maximum)

Так работает поиск максимального значения. Важно правильно выбрать начальное значение: если взять 0, программа ошибется на списке из отрицательных чисел.

Когда нужен индекс

Индекс нужен, если важно положение элемента: заменить значение, сравнить соседние элементы или вывести номер. Тогда используют range(len(numbers)) или enumerate.

numbers = [10, 15, 8]

for index, value in enumerate(numbers):
    print(index, value)

Как выбрать представление данных

Список нужен не во всякой задаче с несколькими числами. Если значения читаются один раз, а требуется только сумма, количество или максимум, их можно обрабатывать по мере чтения. Такой алгоритм хранит несколько накопителей и расходует O(1) дополнительной памяти. При ограничении до десяти миллионов чисел это может быть принципиально.

Хранить весь набор приходится, когда решение возвращается к элементам: сортирует их, ищет медиану, сравнивает соседей или должно вывести исходный порядок после нескольких проверок. Тогда память растёт как O(n), зато доступны индексы и повторные проходы.

Перед кодом выпишите операции над данными. Формулировка «найти наибольшее значение» допускает один проход без списка, а «найти два соседних значения с наибольшей суммой» требует помнить хотя бы предыдущий элемент. Это различие важнее конкретного синтаксиса хранения.

Списки помогают переходить от отдельных переменных к обработке данных. Это один из ключевых шагов от простых программ к задачам ОГЭ, ЕГЭ и олимпиадной информатики.

Практикум: оценки как список и как поток

Сравните две версии задачи об оценках. В первой нужно только посчитать среднее по значениям, которые поступают по одному; во второй после расчёта требуется вывести оценки ниже среднего. Определите, где достаточно суммы и счётчика, а где значения нужно сохранить в списке. Реализуйте вторую версию и проверьте одну оценку, повторяющиеся значения и набор только из отрицательных учебных баллов как заведомо ошибочный ввод. При поиске максимума используйте первый элемент, а не ноль, и объясните это решение.

Контрольная точка

Можно ли вывести все элементы ниже среднего, не храня их и не читая повторно? Ответьте через доступные данные в момент первого прохода. Затем назовите минимальное состояние, достаточное только для среднего значения.

Частые вопросы

Нужно ли всегда превращать входные данные в список?

Нет. Для суммы, количества или максимума часто достаточно обновлять несколько переменных по мере чтения. Список оправдан, если элементы понадобятся повторно, важен их порядок либо требуется обратиться к позиции после завершения первого прохода.

Источники