Python: списки
Разберём «Python: списки» по шагам: короткая теория, наглядный пример, разбор типового задания и ловушки, на которых теряют баллы. В конце — что запомнить и где закрепить на практике.
Python: списки — коллекции, с которыми начинается настоящая практика
Когда программа должна хранить не одно число, а целую последовательность оценок, имён или ответов, отдельные переменные быстро превращаются в путаницу. Списки Python помогают собрать связанные данные в одном месте, обращаться к каждому элементу и обрабатывать их с помощью коротких команд. Разобравшись с индексами, добавлением и перебором, ты сможешь увереннее решать задачи школьной программы и экзаменационные упражнения.
Список записывают в квадратных скобках. Элементы разделяют запятыми. В одном списке могут находиться числа, строки и даже другие списки, хотя на первых шагах лучше работать с однотипными данными.
\( numbers = [4, 7, 10, 13] \)
names = ["Аня", "Илья", "Маша"]
\( empty = [] \)
Список упорядочен: у каждого элемента есть позиция. В Python отсчёт начинается с нуля, поэтому первый элемент имеет индекс 0, второй — индекс 1. Это важное отличие от привычного счёта в быту.
Индексы и срезы: как получить часть списка
Чтобы обратиться к элементу, после имени списка указывают индекс в квадратных скобках. Например, numbers[0] вернёт число 4, а names[2] — строку «Маша». Если индекс выходит за границы списка, Python сообщит об ошибке IndexError. Значит, перед обращением нужно учитывать длину последовательности.
Количество элементов узнают с помощью функции len(). Последний индекс всегда на единицу меньше длины: если в списке 4 элемента, допустимы индексы от 0 до 3. Отрицательные индексы позволяют считать с конца: -1 обозначает последний элемент, -2 — предпоследний.
\( numbers = [4, 7, 10, 13, 16] \)
numbers[0] → 4
\( numbers[-1] \to 16 \)
len(numbers) → 5
Срез получает несколько элементов. Запись list[a:b] берёт элементы начиная с a и не включая b. Поэтому numbers[1:4] содержит элементы с индексами 1, 2 и 3. Можно пропустить начало или конец: numbers[:3] — первые три элемента, numbers[2:] — всё от индекса 2.
Перед решением выпиши маленький список индексов под элементами: 0, 1, 2, 3. Такой приём особенно полезен в задачах, где нужно заменить конкретное значение или взять срез.
Изменение списка и основные методы
Списки изменяемы: можно заменить элемент, добавить новый или удалить ненужный. Чтобы заменить значение, присвой его существующему индексу. Метод append() добавляет один элемент в конец. Метод insert() вставляет элемент на указанную позицию, сдвигая остальные вправо.
Для удаления используют remove(), если известно значение, и pop(), если известен индекс. Команда pop() также возвращает удалённый элемент, поэтому его можно сохранить в отдельную переменную. Метод sort() сортирует список на месте, а reverse() разворачивает порядок элементов.
\( scores = [5, 3, 4] \)
scores.append(5)
\( scores[1] = 4 \)
scores.remove(3)
scores.sort()
Важно различать метод и функцию. Например, scores.sort() меняет сам список, а sorted(scores) создаёт новый отсортированный результат. Если исходный порядок ещё понадобится, выбирай sorted(). Проверить наличие элемента можно оператором in: выражение 4 in scores даст True или False.
Для бесплатной практики можно создать личный кабинет и сразу проверить, насколько уверенно ты обращаешься с индексами и методами.
Перебор элементов и полностью разобранный пример
Чаще всего список обрабатывают циклом for. Переменная цикла по очереди получает каждый элемент, поэтому не нужно вручную писать отдельную команду для каждой позиции. Если нужен индекс, используют range(len(items)) или функцию enumerate(). В учебных задачах важно выбрать вариант, который легче читать.
Разберём задачу: дан список температур. Нужно заменить отрицательные значения на ноль и посчитать сумму получившихся чисел.
\( temps = [3, -2, 7, -1] \)
\( total = 0 \)
for i in range(len(temps)):
if temps[i] < 0:
\( temps[i] = 0 \)
\( total = total + temps[i] \)
print(temps)
print(total)
Сначала создаётся список и переменная total со значением 0. Цикл получает индексы от 0 до 3. На каждой итерации проверяется условие: если температура меньше нуля, элемент заменяется на 0. Затем уже изменённое значение прибавляется к сумме. В результате temps станет [3, 0, 7, 0], а total — 10.
Если менять элементы не требуется, запись for temp in temps обычно короче и понятнее. Для построения нового списка по правилу можно применять генератор списка, но сначала уверенно освой обычный цикл.
Типичные ошибки при работе со списками
Первая ошибка — забыть, что индексы начинаются с нуля. Обращение к items[len(items)] всегда выходит за границу: последний элемент находится по адресу len(items) - 1. Вторая ошибка — путать круглые и квадратные скобки: список создают через [], а индекс записывают после имени списка.
Третья проблема связана с удалением элементов во время перебора. Если удалять значения из того же списка, по которому идёт цикл, часть элементов может быть пропущена из-за сдвига индексов. Безопаснее создать новый список или сначала собрать значения для удаления.
| Задача | Команда | Что происходит |
|---|---|---|
| Добавить в конец | append(x) | Список становится длиннее |
| Удалить по значению | remove(x) | Удаляется первое совпадение |
| Удалить по индексу | pop(i) | Возвращается удалённый элемент |
| Узнать длину | len(items) | Возвращается число элементов |
Метод sort() возвращает None, потому что сортирует список на месте. Не записывай result = items.sort(), если хочешь получить отсортированный список в result.
Ещё одна частая ошибка — ожидать, что присваивание b = a создаст независимую копию. На самом деле обе переменные ссылаются на один список. Для отдельной копии можно использовать a.copy() или срез a[:].
Что запомнить о списках Python
Список создают в квадратных скобках, элементы нумеруются с нуля, а длину находят функцией len(). Индекс помогает получить или изменить один элемент, срез — взять часть списка. Для добавления применяй append(), для удаления — remove() или pop(), для сортировки — sort() либо sorted(). Цикл for позволяет обработать все элементы без повторения одинакового кода.
Перед запуском программы проверяй три вещи: не выходит ли индекс за границы, изменяешь ли ты именно тот список, который нужно, и не удаляешь ли элементы прямо во время перебора. Такой короткий контроль заметно снижает количество ошибок.
Следующий шаг — зарегистрируйся и реши 5 заданий бесплатно в личном кабинете. Начни с индексов, затем переходи к циклам и задачам на обработку последовательностей.
Если готовишься к экзамену, полезно сопоставлять тему с форматом заданий: для ОГЭ открой раздел подготовки к ОГЭ, а для ЕГЭ — материалы ЕГЭ.
Чем список отличается от строки?
Строка хранит последовательность символов, а список — набор объектов. Оба типа поддерживают индексы и срезы, но список можно изменять: добавлять, удалять и заменять элементы.
Как закрепить тему после разбора?
Реши несколько коротких задач: найди элемент по индексу, измени значения, добавь элементы и обработай список циклом. После каждой задачи объясни словами, почему получился именно такой результат.
Когда использовать enumerate()?
Используй enumerate(), когда в цикле нужны одновременно элемент и его индекс. Это обычно понятнее, чем отдельно перебирать диапазон индексов и обращаться к списку по номеру.
Можно ли хранить в списке разные типы данных?
Да, Python это разрешает, например [7, "текст", True]. Но в учебных задачах лучше объединять данные одного назначения, чтобы код было проще читать и проверять.
Проверь себя на реальных заданиях
После такого разбора решите 5–7 заданий подряд — и тема ваша. Тренажёр Просто Урок подберёт их автоматически и объяснит ошибки по шагам. Бесплатно.