Коллекции в задачах: список, массив или поток данных
Список или массив хранит несколько значений под одним именем. Это удобно, когда в задаче есть набор оценок, температур, чисел, слов, результатов участников или координат.
В 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), зато доступны индексы и повторные проходы.
Перед кодом выпишите операции над данными. Формулировка «найти наибольшее значение» допускает один проход без списка, а «найти два соседних значения с наибольшей суммой» требует помнить хотя бы предыдущий элемент. Это различие важнее конкретного синтаксиса хранения.
Списки помогают переходить от отдельных переменных к обработке данных. Это один из ключевых шагов от простых программ к задачам ОГЭ, ЕГЭ и олимпиадной информатики.
Источники
- Босова Л.Л. Информатика. Базовый курс: учебник для 7-9 классов. - М.: БИНОМ. Лаборатория знаний.
- Поляков К.Ю., Еремин Е.А. Информатика. 10-11 классы. Углубленный уровень.
- Python Documentation: The Python Tutorial.