Списки в Python: чем отличаются append() и extend() и когда их использовать

Списки в Python: чем отличаются append() и extend() и когда их использовать

  • 28 июля
  • читать 11 мин
Оксана Томашенко
Оксана Томашенко Content Manager в Hillel IT School

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

Один из самых распространённых вопросов среди новичков касается методов append() и extend(). На первый взгляд, они выполняют одинаковую функцию — добавляют новые данные в список. Однако между ними есть существенная разница, которая влияет на результат работы программы. Неправильный выбор метода может привести к появлению вложенных списков или неожиданной структуры данных.

В этой статье рассмотрим, что такое списки в Python, как работают методы append() и extend(), чем они отличаются, а также какие ошибки чаще всего встречаются при работе с ними.

Что такое список в Python и зачем он нужен

Список (list) — это одна из основных структур данных в Python, которая позволяет хранить несколько элементов в одном объекте. В отличие от обычной переменной, список может содержать десятки, сотни или даже тысячи значений. При этом они могут быть как одного, так и разных типов.

Например:

students = ["Anna", "Oleh", "Maria"]

В этом примере переменная Students содержит список из трёх имён.

Списки используются для работы с любыми наборами данных:

  • списками пользователей;
  • товарами в интернет-магазине;
  • сообщениями;
  • результатам вычислений;
  • файлами;
  • задачами в планировщике;
  • данными, полученными из API или баз данных.

Главное преимущество списков заключается в том, что они изменяются (mutable). Это означает, что после создания списка можно добавлять новые элементы, удалять ненужные или изменять уже существующие без создания нового объекта.

СвойствоСписок Python
Сохраняет порядок элементов✔
Позволяет дубликаты✔
Может содержать разные типы данных✔
Изменяется после создания✔

Одной из наиболее распространённых операций при работе со списками является добавление новых элементов. Именно для этого в Python существуют методы append() и extend().

Если вы только начинаете изучать append python, важно сразу понять, что эти методы решают разные задачи. Они имеют схожий синтаксис, но работают по разным принципам.

К примеру, представим приложение для ведения списка покупок. Каждый раз, когда пользователь добавляет новый товар, программа должна сохранить его в общем списке. В таком случае удобнее всего использовать метод append(), ведь товары добавляются по одному.

Как работает метод append() в Python

Метод append() добавляет один элемент в конец списка. Именно поэтому он является одним из наиболее употребительных методов при работе с коллекциями в Python.

Синтаксис очень прост:

list.append(element)

Например:

numbers = [1, 2, 3]

numbers.append(4)

print(numbers)

Результат:

[1, 2, 3, 4]

В этом случае число 4 стало новым последним элементом списка.

Метод append list python может добавлять не только числа или строки. В качестве элемента можно передать любой объект, включая другой список.

numbers = [1, 2, 3]

numbers.append([4, 5])

print(numbers)

Результат:

[1, 2, 3, [4, 5]]

Обратите внимание: список [4, 5] был добавлен как один отдельный элемент, а не объединён с основным списком.

Именно из-за этой особенности начинающие часто путают append() с extend().

Рассмотрим ещё один практический пример. Предположим, вы создаёте программу для регистрации участников мероприятия. Каждый новый пользователь прилагается отдельно:

participants = ["Anna", "Oleh"]

participants.append("Maria")

print(participants)

Результат:

['Anna', 'Oleh', 'Maria']

В такой ситуации использование append() является лучшим решением, ведь новые данные поступают по одному.

Метод python list append следует использовать, если нужно:

  • прибавить одно число;
  • добавить одну строчку;
  • добавить словарь или другой объект;
  • сохранить вложенный перечень как отдельный элемент;
  • постепенно накапливать данные при выполнении программы.

Как работает метод Extend() в Python

В отличие от append(), метод extend() добавляет в список не один объект, а все элементы другой коллекции. Это означает, что каждый элемент передаваемой последовательности будет отдельно добавлен в конец списка.

Общий синтаксис выглядит следующим образом:

list.extend(iterable)

Параметр iterable — это любой итерированный объект, то есть такой, элементы которого можно перебирать. Это может быть список, кортеж, множество, строчка или даже результат работы некоторых функций Python.

Рассмотрим простой пример:

numbers = [1, 2, 3]

numbers.extend([4, 5])

print(numbers)

Результат:

[1, 2, 3, 4, 5]

В отличие от append(), список [4, 5] не стал отдельным элементом. Метод extend python добавил каждое значение отдельно, образовав один общий список.

Объединение двух списков

Одна с самых распространённых задач, для которых используют extend(), — объединение двух списков.

Например:

frontend = ["HTML", "CSS"]

backend = ["Python", "Django"]

frontend.extend(backend)

print(frontend)

Результат:

['HTML', 'CSS', 'Python', 'Django']

После выполнения метода все элементы списка backend были добавлены в список frontend. При этом сам список backend остался без изменений.

Такой подход часто используется при работе с большими наборами данных, когда требуется объединить информацию из разных источников.

Метод extend() работает не только со списками

Ещё одна особенность extend() заключается в том, что он может работать с любыми итерированными объектами.

К примеру, можно передать кортеж:

numbers = [1, 2]

numbers.extend((3, 4))

print(numbers)

Результат:

[1, 2, 3, 4]

Или множество:

numbers = [1, 2]

numbers.extend({3, 4})

print(numbers)

Обратите внимание: множество (set) не сохраняет порядок элементов, поэтому результат может отличаться при разных запусках программы.

Ещё один интересный пример — работа со строками:

letters = ["A"]

letters.extend("BC")

print(letters)

Результат:

['A', 'B', 'C']

Python воспринимает строку как последовательность символов, поэтому каждая буква добавляется в список по отдельности.

Именно эта особенность иногда удивляет начинающих. Если нужно добавить слово как один элемент списка, следует использовать append(), а не extend().

Когда следует использовать extend()

Метод extend() станет лучшим выбором, если нужно:

  • объединить два или более списка;
  • добавить сразу несколько новых элементов;
  • расширить список данных из другой коллекции;
  • избежать создания вложенных списков;
  • быстро сформировать единый список из нескольких источников данных.

К примеру, представим, что вы создаёте приложение для онлайн-магазина. Информация о товарах поступает из двух разных складов в виде отдельных списков. Чтобы сформировать общий каталог товаров, достаточно использовать extend(), который объединит все позиции в одном списке.

append()vs extend(): разница на примерах

На первый взгляд, оба метода выполняют одинаковую задачу — добавляют данные в список. Однако результат их работы существенно отличается.

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

Использование append():

numbers = [1, 2, 3]

numbers.append([4, 5])

print(numbers)

Результат:

[1, 2, 3, [4, 5]]

Теперь используем extend():

numbers = [1, 2, 3]

numbers.extend([4, 5])

print(numbers)

Результат:

[1, 2, 3, 4, 5]

В первом случае список [4, 5] стал одним новым элементом. Во втором — его элементы были добавлены отдельно.

Именно в этом и состоит главная разница между методами:

  • append() добавляет один объект;
  • extend() добавляет каждый элемент передаваемой коллекции.

Для наглядности сравним её в таблице.

Характеристикаappend()extend()
ДобавляетОдин элементВсе элементы коллекции
Работает со списком как с одним объектом✔✖
Создает вложенный списокМожетНет
Подходит для объединения списков✖✔
Лучше использовать, когдаНеобходимо добавить один элементНужно добавить несколько элементов

Чтобы легче запомнить разницу, можно воспользоваться простым правилом:

  • используйте append(), когда добавляете что-то одно;
  • используйте extend(), когда добавляете целую коллекцию элементов.

Именно правильный выбор метода помогает избежать лишних вложенных списков и сделать код более понятным другим разработчикам.

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

Методы append() и extend() имеют простой синтаксис, но именно при работе с ними начинающие чаще всего допускают ошибки. В большинстве случаев причина заключается в том, что разработчик неправильно понимает, как Python добавляет новые элементы в список.

Рассмотрим самые распространённые ситуации.

Путаница между

append()і extend()

Самая обычная ошибка — использовать append(), когда нужно объединить два списка.

Например:

numbers = [1, 2, 3]

numbers.append([4, 5])

print(numbers)

Многие новички ожидают получить:

[1, 2, 3, 4, 5]

На самом деле результат будет другим:

[1, 2, 3, [4, 5]]

Причина проста: метод append() добавляет один объект, даже если им есть целый список.

Если нужно добавить все элементы другого списка, следует использовать extend():

numbers = [1, 2, 3]

numbers.extend([4, 5])

print(numbers)

Результат:

[1, 2, 3, 4, 5]

Присвоение результата работы метода переменной

Ещё одна распространенная ошибка связана с тем, что append() и extend() не возвращают новый список. Они изменяют уже существующий список напрямую.

Неверный пример:

numbers = [1, 2, 3]

result = numbers.append(4)

print(result)

Результат:

None

Это может сбить с толку тех, кто только начинает работать с Python.

Правильный вариант:

numbers = [1, 2, 3]

numbers.append(4)

print(numbers)

Результат:

[1, 2, 3, 4]

Так же работает и extend() — после вызова метода изменяется сам список, а не создаётся новый.

Использование extend() для одного элемента

Иногда можно встретить такой код:

numbers = [1, 2]

numbers.extend([3])

Хотя он работает правильно, в этом случае логичнее использовать append():

numbers = [1, 2]

numbers.append(3)

Такая запись более короткая, понятная и лучше передаёт намерение разработчика.

Неожиданное поведение при работе со строками

Поскольку extend() работает с любыми итерированными объектами, строка также рассматривается как последовательность символов.

Например:

letters = []

letters.extend("Python")

print(letters)

Результат:

['P', 'y', 't', 'h', 'o', 'n']

Если же нужно добавить слово как один элемент списка, следует использовать append():

letters = []

letters.append("Python")

print(letters)

Результат:

['Python']

Это одна из особенностей языка Python, о которой важно помнить при работе со строками.

Как быстро выбрать подходящий метод

Чтобы не путаться между append() и extend(), можно воспользоваться простым правилом.

Используйте append(), если нужно:

  • добавить одно число, строку или другой объект;
  • постепенно наполнять список;
  • сохранить другой список как отдельный вложенный элемент.

Используйте extend(), если нужно:

  • объединить два списка;
  • добавить сразу несколько элементов;
  • расширить список данных из другой коллекции;
  • избежать создания вложенных списков.

Если при выборе метода возникают сомнения, задайте себе простой вопрос: вы добавляете один объект или все его элементы? Ответ поможет быстро определить какой метод использовать.

Рекомендуем курс по теме

Вывод

Методы append() и extend() относятся к базовым инструментам работы со списками в Python. Несмотря на схожий синтаксис, они выполняют разные задачи.append() добавляет в список один новый элемент, в то время как extend() расширяет список всеми элементами другой коллекции.

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

Если вы только начинаете свой путь в программировании, следует не только запомнить синтаксис методов, но и применять их на практике. На курсе Python Basic от Hillel IT School студенты изучают работу со списками, циклами, функциями, файлами и другими инструментами Python, выполняя практические задачи, максимально приближённые к реальным задачам разработчика.

Рекомендуем публикации по теме