Метод append в Python: как добавлять элементы в список
TL;DR
Метод .append() добавляет один элемент в конец списка. Если в качестве элемента вы добавляете другой список или коллекцию, она будет вложена как единый элемент. Для добавления отдельных элементов используйте цикл for, list.extend(), или списковые включения.

Метод .append() полезен для постепенной сборки данных — например, при фильтрации, вычислениях или в функциях, где нужно аккумулировать результаты. В этой статье разберём примеры, типичные ошибки и альтернативные подходы.
Как добавить значения в список с помощью append
Метод .append() добавляет один элемент в конец существующего списка. Общий вид:
FirstList = [1, 2, 'MUO']
Item = "Orange"
FirstList.append(Item)
print(FirstList)
Output: [1, 2, 'MUO', 'Orange']Важно: если в качестве Item вы передаёте сам список, tuple, set или dict, append вставит этот объект как единый элемент, и в результате получится вложенный список:
Item = ["Orange"]
FirstList.append(Item)
print(FirstList)
Output: [1, 2, 'MUO', ['Orange']]Ещё примеры с несколькими элементами:
FirstList = [1, 2, 5, 8]
Item = ["Orange", "Shoes", 5, 6]
FirstList.append(Item)
print(FirstList)
Output: [1, 2, 5, 8, ['Orange', 'Shoes', 5, 6]]Можно добавлять вложенные структуры разной сложности:
FirstList = [1, (3, 7)]
Item = [5, {"2", 5}, {"Name":"Idowu"}, "Last item"]
FirstList.append(Item)
print(FirstList)
Output: [1, (3, 7), [5, {'2', 5}, {'Name': 'Idowu'}, 'Last item']]Вы также можете добавлять элементы в изначально пустой список:
Empty_list = []
New_list = [1, 4, 8, 6]
Empty_list.append(New_list)
print(Empty_list)
Output: [[1, 4, 8, 6]]Использование append в цикле for
Когда нужно добавить поэлементно — без вложения — используйте цикл for. Это эквивалентно extend(), но даёт гибкость для вычислений или условий:
Empty_list = []
New_list = [1, 4, 8, 6]
for items in New_list:
Empty_list.append(items)
print(Empty_list)
Output: [1, 4, 8, 6]Тот же результат можно получить с помощью extend():
Empty_list = []
New_list = [1, 4, 8, 6]
Empty_list.extend(New_list)
print(Empty_list)
Output: [1, 4, 8, 6]Однако extend() нельзя внутри цикла заменить на то, что не итерируемо. extend() ожидает итерируемый объект и просто добавляет все его элементы.
Когда полезен цикл с append
Цикл + append полезен, если вы фильтруете, трансформируете или условно добавляете элементы. Пример: вставить все чётные числа в заданном диапазоне:
My_list = [2, 4]
List_to_append = range(6, 20)
for new in List_to_append:
if new % 2 == 0:
My_list.append(new)
print(My_list)
Output: [2, 4, 6, 8, 10, 12, 14, 16, 18]Или заполнить пустой список произведениями:
Empty_list = []
List_to_append = range(1, 5)
for new in List_to_append:
new = new * 3
Empty_list.append(new)
print(Empty_list)
Output: [3, 6, 9, 12]append в функциях
Метод часто используют внутри функций для аккумулирования результатов:
def mat(data):
lits = [1, 2]
for datas in data:
if datas % 2 == 0:
lits.append(datas)
return lits
print(mat(range(1, 20)))
Output: [1, 2, 2, 4, 6, 8, 10, 12, 14, 16, 18](В этом примере исходный список lits стартует с [1,2], поэтому 2 появляется дважды.)
Когда append не подходит (примеры и контрпримеры)
- Если вы хотите объединить два списка поэлементно, append создаст вложенный список, чего не нужно. В таких случаях лучше extend() или оператор +.
- Для массового добавления без условий extend() обычно проще и быстрее.
- Для создание списка на основе преобразования или фильтрации list comprehension короче и часто эффективнее.
Контрпример: вы хотите объединить все элементы списков a и b в один плоский список. append даст nested-list; extend() развернёт элементы.
Альтернативы и подходы
- list.extend(iterable) — добавляет все элементы iterable по одному.
- Конкатенация: new = a + b — создаёт новый список (копирование данных).
- Списковые включения (list comprehensions): [f(x) for x in iterable if cond(x)].
- itertools.chain() — для ленивой композиции нескольких итерируемых.
- Распаковка: a = [a, b] — явное создание нового списка.
Выбор зависит от требований к памяти, скорости и читаемости.
Ментальные модели и эвристики
- append = добавить один объект в конец.
- extend = «развернуть» и добавить элементы по одному.
- Если в коде нужна проверка/условие/преобразование — склоняйтесь к for + append или comprehension.
- Для больших объёмов данных избегайте частых расширений через конкатенацию (operator +) — это создаёт копии.
Контрольный список при использовании append
- Нужен ли вложенный список или плоский? Если плоский — используйте extend или итерацию.
- Есть ли условия/преобразования? Если да — for+append или comprehension.
- Требуется ли сохранить порядок? append сохраняет порядок добавления.
- Важна ли производительность? Для массовых операций используйте extend, itertools или пред-резервирование (в целом Python списки динамические).
Шпаргалка: часто используемые шаблоны
- Добавить один элемент: lst.append(x)
- Добавить все элементы другого списка: lst.extend(other)
- Создать список с вычислением: [x*3 for x in seq if cond(x)]
- Аккумуляция в функции:
def collect(iterable):
res = []
for x in iterable:
if condition(x):
res.append(transform(x))
return resКритерии приёмки
- Функция возвращает список с ожидаемыми элементами в правильном порядке.
- Нет лишнего вложения списков, если ожидался плоский список.
- Производительность приемлема для объёма данных (ручные тесты/профилирование).
Короткий глоссарий
- append — метод списка, добавляет единичный элемент.
- extend — метод списка, добавляет элементы из итерируемого объекта.
- list comprehension — способ создать список через выражение и цикл.
Набор тестов (минимальные)
- Добавление одного элемента: [] -> append(1) -> [1]
- Добавление списка: [] -> append([1,2]) -> [[1,2]]
- Поэлементная вставка: [] -> for x in [1,2]: append(x) -> [1,2]
- Совместимость с range, tuple, set.
Диаграмма принятия решения
flowchart TD
A[Нужно добавить элементы?] --> B{Добавляем один объект}
B -- Да --> C[Используйте append]
B -- Нет --> D{Объект итерируемый и нужен плоский список}
D -- Да --> E[Используйте extend или unpacking]
D -- Нет --> F[Используйте for+append или comprehension]Вывод
Метод .append() прост и надёжен. Он особенно удобен при поэтапном сборе данных, когда вам нужно добавлять элементы условно или после вычислений. Но помните о различии между append и extend: одно добавляет объект как целое, другое разворачивает и добавляет элементы по одному. Выбирайте подходящий инструмент в зависимости от требуемого результата.
Примечание
Важно понимать поведение append, чтобы избежать неожиданных вложений и ошибок в логике программы.
Похожие материалы
Почему iPhone и iPad нагреваются и как это исправить
Как искать жильё на Airbnb для отпуска
Arduino Pong: ретро-игра на TV
Как подготовиться к идеальному Дню благодарения
Планирование групповой поездки с друзьями