Python: уроки, справочник и задачи

Методы списка Python: краткий справочник

Раздел: Списки, кортежи и множества · Обновлено 31.10.2026

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

Встроенные методы списка в Python
Фото: Santeri Viinamäki / CC BY-SA 4.0, Wikimedia Commons
Содержание статьи
  1. Все методы списка в одной таблице
  2. Добавление элементов: append, extend, insert
  3. Удаление элементов: remove, pop, clear
  4. Поиск и подсчет: index и count
  5. Порядок и копирование: sort, reverse, copy
  6. Типичные ошибки при работе с методами
  7. Частые вопросы
    1. Сколько методов у списка в Python?
    2. Чем pop() отличается от remove()?
    3. Как добавить элемент в начало списка?
    4. Почему print(a.append(5)) выводит None?

Все методы списка в одной таблице

У типа list ровно одиннадцать публичных методов, их можно увидеть командой [m for m in dir(list) if not m.startswith('_')]. В таблице n - длина списка, k - количество добавляемых элементов.

МетодЧто делаетВозвращаетСложность
append(x)Добавляет один элемент в конецNoneO(1)
extend(iterable)Добавляет в конец все элементы коллекцииNoneO(k)
insert(i, x)Вставляет элемент перед позицией iNoneO(n)
remove(x)Удаляет первое вхождение значенияNoneO(n)
pop(i=-1)Удаляет элемент по индексуУдаленный элементO(1) с конца, O(n) из середины
clear()Удаляет все элементыNoneO(n)
index(x, start, end)Ищет позицию первого вхожденияintO(n)
count(x)Считает, сколько раз встречается значениеintO(n)
sort(key, reverse)Сортирует список на местеNoneO(n log n)
reverse()Разворачивает порядок элементовNoneO(n)
copy()Создает поверхностную копиюНовый списокO(n)

Обратите внимание на третий столбец: восемь методов из одиннадцати изменяют сам список и возвращают None. Значение возвращают только pop(), index(), count() и copy(). Развернутое описание каждого метода с параметрами есть в статье о методах списка.

Добавление элементов: append, extend, insert

Метод append() кладет в конец ровно один объект, каким бы он ни был. extend() перебирает переданную коллекцию и добавляет ее элементы по одному. Разница заметна, когда добавляют список или строку.

a = [1, 2]
a.append([3, 4])
print(a)        # [1, 2, [3, 4]] - вложенный список как один элемент

b = [1, 2]
b.extend([3, 4])
b.extend('ab')
print(b)        # [1, 2, 3, 4, 'a', 'b'] - строка разобрана на символы

b.insert(0, 'start')
print(b[:3])    # ['start', 1, 2]

Метод insert() принимает индекс, перед которым ставится элемент. Индекс больше длины списка не вызывает ошибку: элемент просто окажется в конце. Отрицательный индекс считается с конца, поэтому insert(-1, x) поставит x перед последним элементом, а не после него. Вставка в начало длинного списка работает медленно, так как все элементы сдвигаются на одну позицию.

Удаление элементов: remove, pop, clear

Три метода удаления отличаются тем, как указывается элемент. remove() ищет по значению, pop() работает с индексом и возвращает удаленное, clear() очищает весь список.

tasks = ['почта', 'отчет', 'звонок', 'отчет']

tasks.remove('отчет')     # удалит только первое вхождение
print(tasks)              # ['почта', 'звонок', 'отчет']

last = tasks.pop()        # без аргумента - последний элемент
first = tasks.pop(0)
print(first, last, tasks) # почта отчет ['звонок']

tasks.clear()
print(tasks)              # []

remove() выбрасывает ValueError, если значения нет, а pop() на пустом списке выбрасывает IndexError. Поэтому перед удалением проверяют наличие через оператор in или ловят исключение. Чтобы убрать все вхождения значения, удобнее построить новый список: [t for t in tasks if t != 'отчет']. Другие способы избавиться от повторов описаны в статье об удалении дубликатов из списка.

Поиск и подсчет: index и count

index() возвращает позицию первого найденного элемента и умеет искать в части списка: второй и третий аргументы задают границы поиска. count() возвращает количество вхождений и никогда не выбрасывает исключение, при отсутствии значения он просто вернет 0.

marks = [5, 4, 5, 3, 5]

print(marks.count(5))      # 3
print(marks.index(5))      # 0
print(marks.index(5, 1))   # 2 - поиск начиная с позиции 1
print(marks.count(2))      # 0

positions = [i for i, m in enumerate(marks) if m == 5]
print(positions)           # [0, 2, 4] - все позиции сразу

Если нужно только проверить наличие элемента, используйте x in marks: это короче и не требует обработки ValueError. При частых проверках в большом списке выгоднее один раз превратить его в множество, где поиск выполняется за O(1).

Порядок и копирование: sort, reverse, copy

sort() упорядочивает элементы на месте. Параметр key принимает функцию, по результату которой сравниваются элементы, а reverse=True меняет направление. Сортировка устойчивая: элементы с одинаковым ключом сохраняют исходный порядок.

names = ['ольга', 'Борис', 'анна', 'Виктор']

names.sort()
print(names)  # ['Борис', 'Виктор', 'анна', 'ольга'] - заглавные идут раньше

names.sort(key=str.lower)
print(names)  # ['анна', 'Борис', 'Виктор', 'ольга']

names.sort(key=len, reverse=True)
print(names[0])  # Виктор

Тонкости сортировки сложных данных разобраны в статье о методе sort. Метод reverse() просто переставляет элементы в обратном порядке, ничего не сравнивая.

copy() создает новый список с теми же элементами. Копия поверхностная: вложенные списки и словари не копируются, обе переменные ссылаются на одни и те же внутренние объекты.

matrix = [[1, 2], [3, 4]]
clone = matrix.copy()
clone[0].append(99)
print(matrix)   # [[1, 2, 99], [3, 4]] - изменился и оригинал

Для полностью независимой копии вложенной структуры нужен copy.deepcopy(). Все способы копирования и их отличия собраны в материале о копировании списка.

Типичные ошибки при работе с методами

Большинство ошибок связано с тем, что методы изменяют список на месте. Ниже самые частые ситуации и их исправления.

nums = [3, 1, 2]
result = nums.sort()
print(result)   # None
print(nums)     # [1, 2, 3] - отсортирован сам список

Помимо методов, со списками работают встроенные функции len(), sorted(), reversed(), sum(), а также операторы +, *, in и del. Полный перечень приведен в документации Python.

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

Короткие ответы на вопросы о методах списка.

Сколько методов у списка в Python?

Одиннадцать: append, extend, insert, remove, pop, clear, index, count, sort, reverse и copy. Остальные имена в выводе dir(list) являются служебными методами с двойным подчеркиванием.

Чем pop() отличается от remove()?

pop() удаляет элемент по индексу и возвращает его, а remove() удаляет по значению и возвращает None.

Как добавить элемент в начало списка?

Вызовите a.insert(0, x). Если вставлять в начало приходится постоянно, используйте collections.deque с методом appendleft(), он работает за O(1).

Почему print(a.append(5)) выводит None?

append изменяет список и ничего не возвращает. Сначала вызовите метод, затем выведите сам список: a.append(5) и print(a).