Глава 11 · Очень много информации!

append, extend, insert

Три способа добавить что-то в список — и одна из самых частых ловушек новичка: append() и extend() делают совсем разные вещи.

append() — добавить один элемент

10-221-1
До: numbers.append(3)
10-321-232-1
После: [1, 2, 3]
append.py
numbers = [1, 2]
numbers.append(3)
print(numbers)   # [1, 2, 3]

append() всегда добавляет ровно один новый элемент — даже если этот элемент сам является списком.

append() vs extend() — важная ловушка

append_vs_extend.py
a = [1, 2]
a.append([3, 4])
print(a)   # [1, 2, [3, 4]] — список внутри списка!

b = [1, 2]
b.extend([3, 4])
print(b)   # [1, 2, 3, 4]
10-321-2[3, 4]2-1
append([3, 4]) → один НОВЫЙ элемент-список
10-421-332-243-1
extend([3, 4]) → два элемента ИЗ списка
append() добавляет один объект, extend() — элементы из итерируемого
append(x) кладёт x внутрь как ОДИН новый элемент, каким бы он ни был. extend(iterable) разворачивает переданный список (или любой другой итерируемый объект) и добавляет каждый его элемент по отдельности. Перепутать их — классическая ошибка новичка.

insert() — вставить по индексу

insert.py
fruits = ["яблоко", "банан", "вишня"]
fruits.insert(1, "манго")
print(fruits)   # ["яблоко", "манго", "банан", "вишня"]
"яблоко"0-3"банан"1-2"вишня"2-1
До: insert(1, 'манго')
"яблоко"0-4"манго"1-3"банан"2-2"вишня"3-1
После: остальные элементы сдвинулись вправо

Элементы начиная с указанного индекса как будто «раздвигаются», освобождая место для нового значения — а их индексы после вставки увеличиваются на единицу.

Практика: append, extend, insert
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →