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

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

В 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), зато доступны индексы и повторные проходы.

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

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

Источники