В этой статье мы расскажем вам, как добавить элемент в список в Python. Вы узнаете о методе .append()
и увидите, чем он отличается от других методов, используемых для добавления элементов в списки.
Давайте начнем!
Друзья, подписывайтесь на наш телеграм канал Pythonist. Там еще больше туториалов, задач и книг по Python
Что такое списки в Python? Определение для начинающих
Массив в программировании — это упорядоченный набор элементов, где все элементы должны иметь один и тот же тип данных.
Однако, в отличие от других языков программирования, массивы не являются встроенной структурой данных в Python. Вместо традиционных массивов Python использует списки.
Списки, по сути, представляют собой динамические массивы и являются одной из наиболее распространенных и мощных структур данных в Python.
Можете считать их упорядоченными контейнерами. Они хранят и организуют похожие связанные данные вместе.
Кроме того, элементы, хранящиеся в списке, могут относиться к любому типу данных.
Могут быть списки целых чисел (int
), списки чисел с плавающей точкой (float
), списки строк (string
) и списки данных любых других встроенных типов Python.
Списки более гибкие, чем традиционные массивы. Это означает, что в одном списке может быть несколько различных типов данных.
Списки содержат 0 или более элементов, то есть могут быть и пустыми. Внутри списка также могут быть повторяющиеся значения.
Значения разделяются запятой и заключаются в квадратные скобки []
.
Как создавать списки в Python
Чтобы создать новый список, сначала дайте ему имя. Затем добавьте оператор присваивания (=
) и пару квадратных скобок. Внутри скобок добавьте значения, которые должны содержаться в списке.
К примеру, это может выглядеть так:
# Создаем новый список имен names = ["Jimmy", "Timmy", "Kenny", "Lenny"] # Выводим список в консоль print(names) # Результат # ['Jimmy', 'Timmy', 'Kenny', 'Lenny'][python_ad_block]
Как индексируются списки в Python
Списки поддерживают порядок элементов.
Каждый элемент имеет собственный порядковый номер — индекс, который можно использовать для доступа к самому элементу.
Индексы в Python (и любом другом современном языке программирования) начинаются с 0 и увеличиваются для каждого элемента в списке.
Например, список, созданный нами ранее, имел 4 значения:
names = ["Jimmy", "Timmy", "Kenny", "Lenny"]
- Первое значение в списке, «Jimmy», имеет индекс 0.
- Второе значение в списке, «Timmy», имеет индекс 1.
- Третье значение в списке, «Kenny», имеет индекс 2.
- Четвертое значение в списке, «Lenny», имеет индекс 3.
Чтобы получить доступ к элементу в списке по его индексу, сначала напишите имя списка, затем в квадратных скобках напишите целое число — индекс элемента.
Например, если вы хотите получить доступ к элементу с индексом 2, вы должны сделать следующее:
names = ["Jimmy", "Timmy", "Kenny", "Lenny"] print(names[2]) # Результат # Kenny
Списки в Python изменяемы
В Python, когда объекты изменяемы, это означает, что их значения могут быть изменены после создания объектов.
Списки являются изменяемыми объектами, поэтому их можно обновлять и изменять после их создания.
Списки также являются динамическими, то есть они могут увеличиваться и уменьшаться на протяжении всей жизни программы.
Вы можете как удалить элементы из существующего списка, так и добавить новые.
Для добавления и удаления элементов есть специальные встроенные методы списков.
Например, для добавления элементов существуют методы .append()
, .insert()
и .extend()
.
Для удаления элементов существуют такие методы, как .remove()
, .pop()
и .pop(index)
.
Про удаление элементов из списка можно подробнее почитать в статье «Как удалить элемент из списка в Python». Здесь мы сфокусируемся на методах добавления элементов.
Что делает метод .append()?
Метод .append()
добавляет дополнительный элемент в конец уже существующего списка.
Общий синтаксис выглядит примерно так:
list_name.append(item)
Давайте разберем это:
list_name
— это имя вашего списка.append()
— это метод списка для добавления элемента в конецlist_name
item
— это отдельный элемент, который вы хотите добавить
При использовании .append()
исходный список изменяется. Новый список не создается.
Если вы хотите добавить дополнительное имя в список, созданный ранее, вы должны сделать следующее:
names = ["Jimmy", "Timmy", "Kenny", "Lenny"] # Добавляем имя Dylan в конец списка names.append("Dylan") print(names) # Результат # ['Jimmy', 'Timmy', 'Kenny', 'Lenny', 'Dylan']
В чем разница между методами .append() и .insert()?
Разница между этими двумя методами заключается в том, что .append()
добавляет элемент в конец списка, тогда как .insert()
вставляет элемент на указанную позицию в списке.
Как вы видели в предыдущем разделе, .append()
добавит элемент, который вы передаете в качестве аргумента функции, в конец списка.
Но вы можете указать позицию, на которую хотите добавить элемент, если воспользуетесь другим методом добавления — .insert()
.
Общий синтаксис выглядит следующим образом:
list_name.insert(position,item)
Давайте разбираться:
list_name
— это имя вашего списка.insert()
— это метод для вставки элемента в списокposition
— первый аргумент метода. Это всегда целое число — порядковый номер позиции, на которую вы хотите поместить новый элементitem
— второй аргумент метода. Здесь вы указываете новый элемент, который хотите добавить в список.
Предположим, у вас есть следующий список языков программирования:
programming_languages = ["JavaScript", "Java", "C++"] print(programming_languages) # Результат # ['JavaScript', 'Java', 'C++']
Если вы хотите вставить «Python» в начало этого списка, вы должны использовать метод .insert()
и указать позицию 0 (помните, что первое значение в списке всегда имеет индекс 0).
programming_languages = ["JavaScript", "Java", "C++"] programming_languages.insert(0, "Python") print(programming_languages) # Результат # ['Python', 'JavaScript', 'Java', 'C++']
Если бы вы хотели оставить «JavaScript» первым элементом в списке, а затем добавить «Python»
, нужно было бы указать позицию 1:
programming_languages = ["JavaScript", "Java", "C++"] programming_languages.insert(1,"Python") print(programming_languages) # Результат # ['JavaScript', 'Python', 'Java', 'C++']
Метод .insert()
дает вам немного больше гибкости по сравнению с методом .append()
, который добавляет новый элемент только в конец списка.
В чем разница между методами .append() и .extend()?
Что, если вы хотите добавить в список не один, а сразу несколько элементов?
Вы можете воспользоваться тем же методом .append()
.
Скажем, у вас есть список, содержащий только два языка программирования:
programming_languages = ["JavaScript", "Java"] print(programming_languages) # Результат # ['JavaScript', 'Java']
И вы хотите добавить еще два языка в конце.
В этом случае вы передаете список, содержащий два новых значения, в качестве аргумента для .append()
:
programming_languages = ["JavaScript", "Java"] # Добавляем два новых элемента в конец списка programming_languages.append(["Python","C++"]) print(programming_languages) # Результат # ['JavaScript', 'Java', ['Python', 'C++']]
Если вы внимательно посмотрите на вывод — ['JavaScript', 'Java', ['Python', 'C++']]
, — вы увидите, что в конец уже существующего списка добавлен новый список.
Итак, .append()
добавляет список внутрь списка. Таким образом, вы получаете вложенный список.
Списки являются объектами, и когда вы используете .append()
для добавления одного списка в другой, новые элементы будут добавлены как один объект (в данном случае, как один список).
Скажем, у вас уже было два списка, например:
names = ["Jimmy", "Timmy"] more_names = ["Kenny", "Lenny"]
Что, если бы вы захотели объединить содержимое обоих списков в один, добавив к names
содержимое more_names
?
Когда для этой цели используется метод .append()
, внутри names
создается другой список:
names = ["Jimmy", "Timmy"] more_names = ["Kenny", "Lenny"] # Добавляем содержимое more_names в names names.append(more_names) print(names) # Результат # ['Jimmy', 'Timmy', ['Kenny', 'Lenny']]
Итак, .append()
добавляет новые элементы в виде другого списка, добавляя объект в конец.
Особенности использования .extend()
Чтобы на самом деле объединить списки, включив все элементы из одного списка в другой, вам нужно использовать метод .extend()
.
Общий синтаксис выглядит следующим образом:
list_name.extend(iterable/other_list_name)
Итак, давайте разбираться:
list_name
— имя одного из списков.extend()
— это метод добавления всего содержимого одного списка в другойiterable
может быть любым итерируемым объектом, таким как другой список, например,other_list_name
. В данном случаеother_list_name
— это список, который будет объединен сlist_name
, а все его элементы будут добавлены один за другим в конецlist_name
по отдельности.
Итак, взяв код из предыдущего примера и заменив .append()
на .extend()
, мы получим следующее:
names = ["Jimmy", "Timmy"] more_names = ["Kenny", "Lenny"] names.extend(more_names) print(names) # Результат # ['Jimmy', 'Timmy', 'Kenny', 'Lenny']
Когда мы использовали .extend()
, список names
расширился, а его длина увеличилась на 2.
Метод .extend()
принимает список (или другой итерируемый объект) в качестве аргумента, выполняет итерацию по каждому элементу, а затем добавляет каждый элемент в итерируемом объекте в список.
Еще одно различие между .append() и .extend()
Когда вы хотите добавить строку, .append()
добавляет в конец списка весь элемент целиком:
names = ["Jimmy", "Timmy", "Kenny", "Lenny"] # Добавляем имя Dylan в конец списка names.append("Dylan") print(names) # Результат # ['Jimmy', 'Timmy', 'Kenny', 'Lenny', 'Dylan']
Если вместо этого использовать .extend()
, каждый символ в строке будет добавлен в список как отдельный элемент.
Это связано с тем, что строки являются итерируемыми объектами, а .extend()
перебирает переданный ему итерируемый аргумент.
Итак, тот же пример, но с методом .extend()
, будет выглядеть так:
names = ["Jimmy", "Timmy", "Kenny", "Lenny"] # Передаем в .extend() строку (итерируемый объект) names.extend("Dylan") print(names) # Результат # ['Jimmy', 'Timmy', 'Kenny', 'Lenny', 'D', 'y', 'l', 'a', 'n']
Заключение
Подводя итог, можно сказать, что метод .append()
используется для добавления элемента в конец существующего списка без создания нового списка. Для добавления элемента на любую заданную позицию в списке стоит использовать метод .insert()
.
Когда метод .append()
используется для добавления списка в другой список, он создает вложенный список. Если же вы хотите добавить элементы одного списка в другой, при этом не создавая вложенных списков, то стоит использовать метод .extend()
.
Спасибо за чтение и успехов в написании кода!
Перевод статьи «Append in Python – How to Append to a List or an Array».