Python: методы списков
Если «Python: методы списков» вызывает ступор — это нормально: тема собрана из простых идей. Покажем их по порядку: теория, пример, разбор задания и типичные ошибки.
Что такое методы списков в Python
Список в Python умеет хранить несколько значений: оценки, имена, ответы на задания или результаты вычислений. Но школьнику часто трудно понять, как быстро добавить элемент, удалить лишний или упорядочить данные, не переписывая весь список вручную. Методы списков решают эту проблему: ты вызываешь готовую команду у конкретного списка и меняешь его содержимое понятным способом.
Метод записывается через точку после имени списка: имя_списка.метод(). Скобки обязательны, даже если методу не нужно передавать дополнительные данные. Например, numbers.append(7) добавит число 7 в конец списка. Важно отличать метод от функции: функция len(numbers) получает длину списка, а метод работает с самим объектом.
Большинство методов изменяют исходный список. Поэтому после команды не всегда нужно присваивание. Если хочется потренироваться без установки Python, можно открыть бесплатную практику в личном кабинете и сразу проверить несколько коротких примеров.
Добавление и объединение элементов
Для добавления одного элемента используется append(). Он помещает значение в конец списка. Если нужно вставить элемент на определённое место, применяют insert(индекс, значение). Индексация начинается с нуля: позиция 0 — первый элемент, позиция 1 — второй.
Метод extend() добавляет в список элементы другого итерируемого объекта, например второго списка. Это не то же самое, что append(): первый метод добавит значения по одному, а второй поместит весь второй список как один вложенный элемент.
\( a = [2, 4] \)
a.append(6) → [2, 4, 6]
a.insert(1, 3) → [2, 3, 4, 6]
a.extend([8, 10]) → [2, 3, 4, 6, 8, 10]
Если задача просит объединить наборы данных, сначала уточни, нужен ли вложенный список. Такое различие часто проверяют в заданиях ОГЭ и ЕГЭ. Подборку похожих форматов можно посмотреть в разделе подготовки к ОГЭ.
Перед запуском кода проговори словами, что должно произойти со списком. Если команда добавляет одно значение, выбирай append(), а если переносит несколько значений, сравни задачу с extend().
Удаление и поиск
Метод remove(значение) удаляет первое найденное вхождение. Если значения нет, Python выдаст ошибку. Метод pop() удаляет элемент по индексу и одновременно возвращает его. Без аргумента удаляется последний элемент, а pop(0) убирает первый.
Команда clear() полностью очищает список. Для поиска позиции элемента используется index(значение), а для подсчёта повторений — count(значение). Оба метода работают с конкретным значением, а не с индексом.
| Метод | Результат | Что учесть |
|---|---|---|
| remove(x) | Удаляет первое x | Ошибка, если x отсутствует |
| pop(i) | Удаляет и возвращает элемент | Индекс должен существовать |
| index(x) | Возвращает индекс первого x | Ошибка, если x отсутствует |
| count(x) | Считает вхождения x | Возвращает число |
Безопаснее сначала проверить наличие: if 5 in numbers:. Это похоже на проверку условия в математике: действие выполняется только при истинном утверждении, например когда число ≥ 0.
Сортировка и изменение порядка
Метод sort() сортирует исходный список. По умолчанию числа идут от меньшего к большему, а строки — в соответствии с порядком символов. Для обратного порядка передают аргумент reverse=True. Можно также указать key, если сортировать нужно по длине строки или другому признаку.
Метод reverse() просто разворачивает текущий порядок элементов. Он не сортирует значения. Список [3, 1, 2] после reverse() станет [2, 1, 3], а не [3, 2, 1]. Это важное различие.
\( scores = [7, 3, 10, 6] \)
scores.sort() → [3, 6, 7, 10]
scores.reverse() → [10, 7, 6, 3]
Оба метода изменяют исходный список и возвращают None. Поэтому запись new_scores = scores.sort() приведёт к тому, что new_scores будет равно None. Если нужен новый отсортированный список, используют встроенную функцию sorted(scores). На практике полезно закрепить это различие в личном кабинете с бесплатными заданиями.
Не путай sort() и sorted(). Первый метод меняет список на месте и ничего полезного не возвращает, а sorted() создаёт новый результат. Всегда смотри, где хранится итог.
Разобранный пример и типичные ошибки
Разберём задачу: дан список результатов, нужно удалить повторяющийся результат 4, добавить 9, отсортировать значения по возрастанию и узнать позицию числа 9.
\( results = [6, 4, 8, 4] \)
results.remove(4) → [6, 8, 4]
results.append(9) → [6, 8, 4, 9]
results.sort() → [4, 6, 8, 9]
\( position = results.index(9) \to 3 \)
Сначала remove() удаляет только первое вхождение 4, поэтому второе остаётся. Затем append() ставит 9 в конец. После sort() значения упорядочиваются, и индекс числа 9 становится равен 3, потому что отсчёт начинается с нуля. Если бы требовалась четвёртая позиция для человека, пришлось бы вывести position + 1.
Типичные ошибки: забыть скобки, перепутать индекс и значение, вызвать index() до проверки наличия элемента, ожидать от reverse() сортировки и присвоить результат sort(). В задачах с удалением нескольких одинаковых значений одного remove() недостаточно: его нужно повторять в цикле или использовать другой алгоритм.
Что запомнить
Главные методы списков образуют удобную карту действий. append() добавляет один элемент в конец, extend() — несколько, insert() вставляет по индексу. remove(), pop() и clear() удаляют данные, но делают это по-разному. index() ищет позицию, count() считает повторы, sort() сортирует, а reverse() разворачивает порядок.
Запомни два правила: индекс начинается с нуля, а изменяющие методы обычно работают с исходным списком. Если команда может завершиться ошибкой, заранее проверь условие через in. Небольшая практика полезнее механического заучивания: зарегистрируйся и реши 5 заданий бесплатно в личном кабинете, каждый раз объясняя действие метода своими словами.
список.метод() → изменённый список или отдельный результат
индекс первого элемента = 0
sort() меняет список, sorted() создаёт новый
Чем append() отличается от extend()?
append() добавляет один объект целиком. Если передать ему список, получится вложенный список. extend() перебирает переданный объект и добавляет его элементы по одному.
Можно ли удалить элемент по индексу?
Да, используй pop(индекс). Метод удалит элемент и вернёт его значение. Если значение не нужно, можно применить оператор del.
Почему после sort() получается None?
sort() изменяет исходный список на месте и не возвращает новый список. Поэтому результат метода не нужно сохранять в переменную. Для нового списка используй sorted().
Как закрепить тему после разбора?
Реши несколько коротких задач: добавь элементы, удали повтор, отсортируй список и найди индекс. После каждого запуска сначала предсказывай результат, а затем сравнивай его с выводом программы.
Не оставляйте тему «прочитанной»
Понимание — половина дела. Вторая — практика с обратной связью: личный кабинет Просто Урок покажет, где вы ошибаетесь, и подтянет слабые места.