SkillPy

append vs extend в Python: в чём разница

Время чтения8 мин чтения
Опубликовано10 сентября 2026 г.
Легко
Python
Списки
Методы
Начинающим
append vs extend в Python: в чём разница

append и extend в Python — два метода списка, которые часто путают. Разница простая: append добавляет переданный объект как один элемент, а extend распаковывает его и добавляет каждый элемент по отдельности. Из-за этого одинаковый на вид код даёт разный результат. Разберём на примерах.

Коротко

list.append(x) кладёт x в конец списка как единый элемент — если x список, получится вложенный список. list.extend(x) перебирает x и добавляет его элементы поштучно. Нужно вложить объект целиком — append; влить элементы другого списка — extend.

a = [1, 2]
a.append([3, 4])
print(a)

b = [1, 2]
b.extend([3, 4])
print(b)
[1, 2, [3, 4]]
[1, 2, 3, 4]

append([3, 4]) добавил весь список [3, 4] как один элемент — получился вложенный список. extend([3, 4]) распаковал его и добавил 3 и 4 по отдельности. Код почти одинаковый, а результат принципиально разный.

.append([4, 5]) — добавляет список как один элемент

numbers = [1, 2, 3]
numbers.append([4, 5])
print(numbers)  # [1, 2, 3, [4, 5]]

Метод .append() кладёт переданный список целиком, одним вложенным элементом. В списке становится 4 элемента: последний — это вложенный список [4, 5].

.extend([4, 5]) — добавляет элементы по отдельности

numbers = [1, 2, 3]
numbers.extend([4, 5])
print(numbers)  # [1, 2, 3, 4, 5]

Метод .extend() разбирает переданный список и добавляет каждый его элемент по отдельности. В списке становится 5 элементов.

Ловушка: extend со строкой

Строка в Python — это тоже последовательность (из символов). Поэтому extend со строкой распакует её по буквам, что чаще всего не то, чего ожидаешь.

tags = ["python"]
tags.extend("go")
print(tags)
['python', 'g', 'o']

extend("go") добавил не слово, а два символа — 'g' и 'o'. Чтобы добавить строку целиком, нужен append("go"). Про списки, их методы и хранение элементов — в гайде Списки в Python: создание, методы и срезы.

Когда что использовать

СитуацияМетодРезультат для [1, 2]
Добавить один объект (число, строку, список целиком)append(x)append([3,4]) → [1, 2, [3, 4]]
Влить элементы другой коллекцииextend(x)extend([3,4]) → [1, 2, 3, 4]

Оба метода меняют список на месте и возвращают None — присваивать a = a.append(x) не нужно, иначе потеряешь список. Почему методы возвращают None, а не изменённый объект — это про изменяемые типы, разобрано в гайде Типы данных в Python: полный гайд для начинающих.

Короткие ответы на вопросы

В чём главная разница append и extend?

append добавляет аргумент как один элемент, extend — распаковывает его и добавляет элементы по отдельности. append([3,4]) даёт вложенный список, extend([3,4]) — плоский.

Как добавить один список внутрь другого целиком?

Через append: a.append([3, 4]) вложит список [3, 4] как единый элемент. extend в этом случае «разольёт» его элементы.

Почему extend со строкой добавляет буквы?

Потому что строка — это последовательность символов, а extend перебирает переданную последовательность. Чтобы добавить строку целиком, используй append.

Кот-наставник

— Простое правило: append — «положи целиком», extend — «высыпи содержимое». append([3,4]) даёт вложенный список, extend([3,4]) — плоский.

— И помни про строку: extend("go") добавит буквы, а не слово. Нужно слово — бери append.

Методы списков запоминаются на практике

На SkillPy ты работаешь со списками сам, а AI-наставник показывает, где append вложил объект, а где extend разлил элементы, — до того, как это станет багом. Он понимает твой код, а не сверяет с шаблоном.