Статья

Python: массивы и списки: разбор для ЕГЭ

3 сентября 2026~8 минут11 класс

Если «Python: массивы и списки» кажется тёмным лесом — это нормально: тема собрана из нескольких простых идей. Покажем их по порядку, разберём пример и предупредим о ловушках экзамена.

Зачем нужны списки в Python и как они устроены в ЕГЭ

Школьники часто теряют первичные баллы в номерах 17, 24, 25, 26 и 27 только из-за неумения быстро и чисто обрабатывать числовые последовательности. В этом руководстве мы разберем работу со списками в Python от базового синтаксиса до практических приемов ЕГЭ, чтобы ты научился уверенно писать безошибочный код.

В кодификаторе ЕГЭ термин «массив» обозначает упорядоченную последовательность элементов фиксированного или переменного размера. В языке Python классических массивов нет: вместо них используется встроенный тип данных list (список). Список представляет собой динамический массив ссылок на объекты в памяти. Это значит, что длина списка может свободно увеличиваться и уменьшаться во время работы программы, а внутри одной структуры разрешено хранить числа, строки и даже другие списки.

Нумерация элементов в Python всегда начинается с нуля. Первый элемент списка a имеет индекс 0, второй — 1, а последний — len(a) - 1. Если ты хочешь сразу проверить свое понимание теории на реальных тестах, загляни в бесплатный личный кабинет Просто Урок, где собраны тематические подборки задач.

Главные методы списков: шпаргалка для экзамена

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

Операция / Метод Что делает Пример использования
len(a) Возвращает количество элементов len([3, 7, 2]) → 3
append(x) Добавляет элемент x в конец списка a.append(10)
sort(reverse=False) Сортирует список на месте по возрастанию a.sort()
count(x) Считает, сколько раз значение x встречается в списке a.count(0)
sum(a), min(a), max(a) Считает сумму, минимум или максимум числового списка sum(a) / len(a)
Совет репетитора

При чтении чисел из файла в заданиях 17 и 24 используй списочные выражения (генераторы). Конструкция a = [int(x) for x in open('17.txt')] считывает весь файл в список целых чисел за одну строчку кода, экономя твое время на экзамене.

Срезы и отрицательные индексы без ошибок

Срезы позволяют извлекать любую непрерывную подпоследовательность или переворачивать список в одно действие. Общий синтаксис среза выглядит так: список[старт:стоп:шаг]. При этом правая граница стоп никогда не включается в результирующий срез.

Отрицательная индексация идет с конца: индекс -1 указывает на последний элемент, -2 — на предпоследний. Шаг среза определяет направление и частоту выборки.

\( a = [10, 20, 30, 40, 50, 60] \)
a[1:4] → [20, 30, 40] (элементы с индексами 1, 2, 3)
a[:3] → [10, 20, 30] (первые три элемента)
a[-2:] → [50, 60] (последние два элемента)
a[::-1] → [60, 50, 40, 30, 20, 10] (разворот списка)

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

Типичные ловушки: ссылки, копирование и циклы

В Python переменная списка хранит не сами значения, а ссылку на область памяти. Простое присваивание b = a не создает дубликат: обе переменные начинают указывать на один и тот же список. Изменение b[0] автоматически изменит и a[0].

Ловушка

Никогда не удаляй элементы из списка прямо во время прохода по нему циклом for x in a. При вызове a.remove(x) индексы оставшихся элементов смещаются влево, и цикл неизбежно пропустит следующий за удаленным элемент. Для корректной фильтрации создавай новый список или применяй генератор.

Для создания полноценной копии одномерного списка применяй метод b = a.copy() или срез b = a[:]. Если требуется работать с двумерной таблицей (матрицей), используй модуль copy и функцию deepcopy(), иначе вложенные строки останутся связанными ссылками.

Разбор типовой задачи №17 из ЕГЭ

Рассмотрим стандартную задачу на обработку пар элементов. Условие: дан файл с последовательностью целых чисел от -10 000 до 10 000. Определи количество пар элементов, в которых хотя бы одно число делится на 3, а сумма элементов пары меньше максимального элемента всей последовательности, кратного 19. В ответе запиши количество таких пар и максимальную из их сумм.

Алгоритм решения по шагам:

1. Читаем все числа из файла в список: a = [int(x) for x in open('17.txt')]
2. Находим контрольное значение: max_19 = max(x for x in a if x % 19 == 0)
3. Создаем список для подходящих сумм: ans = []
4. Проходим по всем парам соседних элементов от 0 до len(a) - 2:
\(     x, y = a[i], a[i + 1] \)
\(     if (x \% 3 == 0 or y \% 3 == 0) and (x + y < max_19): \)
\(         ans.append(x + y) \)
5. Выводим результат: print(len(ans), max(ans))

Такой подход гарантирует линейную сложность O(N) и отрабатывает менее чем за 0.1 секунды. Потренироваться в решении аналогичных прототипов ты можешь в тренажере Просто Урок.

Что запомнить для максимального балла

Списки в Python — это главный инструмент для сдачи ЕГЭ по информатике на 80+ баллов. Повторим ключевые правила перед экзаменом:

1. Индексация начинается с нуля, а диапазон соседних пар проверяется до len(a) - 1.
2. Списочные выражения заменяют громоздкие циклы и уменьшают вероятность синтаксической ошибки.
3. Встроенные функции min(), max(), sum() и len() работают быстрее рукописных алгоритмов.
4. Для клонирования списков используй a.copy(), чтобы избежать скрытой мутации данных.

Следующий шаг — переходи в личный кабинет и реши 5 тренировочных заданий по спискам бесплатно, чтобы закрепить материал на практике.

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

В чем разница между массивом и списком в Python?

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

Чем метод a.sort() отличается от функции sorted(a)?

Метод a.sort() меняет исходный список на месте и возвращает None, а sorted(a) возвращает новый отсортированный список, не изменяя оригинал.

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

Используй генератор [[0] * m for _ in range(n)]. Конструкция [[0] * m] * n создаст n ссылок на одну и ту же строку, что приведет к логической ошибке.

Как закрепить тему после разбора?

Авторизуйся в бесплатном личном кабинете «Просто Урок» и реши интерактивный тест по работе со списками с мгновенной проверкой ответов.

Проверь себя на реальных заданиях

После такого разбора решите 5–7 заданий подряд — и тема ваша. Тренажёр Просто Урок подберёт их автоматически, ошибки объяснит по шагам. Бесплатно, в браузере.

Важно. Материалы сайта носят информационно-образовательный характер и не являются публичной офертой (ст. 437 ГК РФ), индивидуальной консультацией или руководством к действию. Мы аккуратно работаем с фактами, но не гарантируем полную точность и актуальность: структура и правила экзаменов могут меняться — сверяйтесь с официальными источниками (ФИПИ, действующие кодификаторы и нормативные акты РФ). Администрация сайта не несёт ответственности за возможные неточности и за решения, принятые на основе материалов. Заметили неточность — напишите нам, мы исправим.