Методы append() и extend() в Python: добавляем элементы в список
Учимся работать со списками с помощью встроенных функций языка.
Иллюстрация: Катя Павловская для Skillbox Media
Методы append() и extend() позволяют добавить новый элемент в уже существующий список или объединить несколько list-объектов в один. В этой статье мы расскажем и покажем на примерах, как ими пользоваться. А в конце — поделимся менее очевидными способами расширения списков.
Что делает append() в Python
append() добавляет в конец списка элемент, переданный ему в качестве аргумента. Как и все методы в Python, он вызывается через оператор . (точка).
Синтаксис и возвращаемое значение
append() принимает один аргумент item и добавляет его в конец list. Тип параметра может быть любым: числа, строки, словари и так далее. Метод возвращает объект None — то есть ничего.
Примеры использования append()
Допустим, у нас есть список a, который заполнен строками:
Если мы захотим добавить в него новую строку 'row', то передадим её в качестве аргумента в append(). Так как метод принадлежит типу list, то вызывать его нужно для объекта a через точку:
Строка добавилась в конец нашего списка. Всё работает.
Усложним задачу и попробуем добавить ещё один список из двух строк:
Как мы видим, в a добавился список b с вложенными в него элементами. А если мы захотим, чтобы элементы из b добавились отдельно? Вот так:
К сожалению, с помощью append() этого сделать нельзя, потому что метод принимает только один аргумент. Если вы всё-таки попытаетесь передать несколько объектов через запятую, то интерпретатор вызовет исключение TypeError (ошибка типа):
К счастью, есть метод extend(), который позволяет добавить одновременно несколько элементов. О нём и поговорим далее.
Что делает extend() в Python
extend() принимает в качестве параметра итерируемый объект и объединяет его со списком.
Синтаксис и возвращаемое значение
extend() добавляет новые элементы в конец списка, но, в отличие от append(), принимает в качестве параметров итерируемые объекты: списки, кортежи и строки. При этом объединяемые списки могут содержать элементы любых типов: например, вы можете объединить строки с числами или числа с кортежами.
Как и append(), метод возвращает объект None.
Примеры использования extend()
Вернёмся к нашему списку a:
Допустим, мы хотим соединить его с другим списком из строк. Передадим b в extend() и получим результат:
Как видите, каждый элемент из b по отдельности добавился в a.
Мы можем сделать то же самое и с другим итерируемыми объектами — например, кортежами или строками:
Обратите внимание: строки, которые передаются в extend(), превращаются в списки символов и добавляются посимвольно. Так, строка 'man' разложилась на 'm', 'a', 'n'.
Если передать в extend() не итерируемый объект, например число, Python генерирует TypeError:
В сообщении нам вежливо объясняют, что число — это не итерируемый объект.
Как ещё можно добавить элементы в список
Чтобы упростить жизнь питонистам, разработчики языка добавили пару фич, которые помогают быстро добавлять элементы в списки.
Оператор +. Он напоминает обычный математический оператор, но со списками действует как функция extend():
Все элементы одного списка добавились в конец другого.
Срезы. Ещё один способ добавить элементы в список — нестандартно использовать индексацию. Выглядит это так:
Выглядит немного странно, но это действительно работает. Когда мы пытаемся обратиться к несуществующим элементам a, язык добавляет новые элементы из списка b, ссылку на который мы передали справа от оператора присваивания.
Что запомнить
- Функция append() позволяет добавлять в список один новый элемент — например, число, строку или другой список.
- Функция extend() работает как append(), но в качестве параметра принимает итерируемый объект: список, кортеж или строку. Содержимое этого объекта поэлементно добавляется в другой список.
- Кроме методов append() и extend() добавить элементы в список можно с помощью оператора + и срезов. Оба способа действуют как extend() — поочерёдно добавляют элементы одного списка в другой.
Больше интересного про код в нашем телеграм-канале. Подписывайтесь!