<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Бесплатный перенос IT-инфраструктуры в облако

Как добавить элемент в список Python: простая инструкция

Миша Курушин
Миша Курушин
Технический писатель
24 декабря 2024 г.
30
12 минут чтения
Средний рейтинг статьи: 5

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

Доступ (добавление, изменение, удаление) к каждому элементу осуществляется по индексу. Индексация (нумерация) в списке начинается с нуля.

По сути, список аналогичен массиву в других языках программирования.

В этом руководстве будет подробно показано, как добавить новый элемент в список Python с помощью имеющихся в языке методов.

Все показанные примеры запускались на облачном сервере Timeweb Cloud под управлением операционной системы Ubuntu 22.04 с использованием интерпретатора Python версии 3.10.12.

В качестве альтернативного инструмента тестирования (запуска) кода Python можно использовать онлайн компиляторы:

Добавление — append()

Чаще всего в логике большинства программ, написанных на Python, необходимо просто добавить элемент в конец списка.

Для этого в языке Python есть соответствующий метод append():

employeeList = ["Евгений", "Екатерина", "Иван"] # создание небольшого списка, в который будет добавляться новый элемент

print("Список сотрудников:", employeeList) # вывод в консольный терминал содержимого списка перед добавлением нового элемента
print("Длина списка:", len(employeeList)) # вывод в консольный терминал длины списка перед добавлением нового элемента

employeeList.append("Александр") # добавление нового элемента в конец списка

print("Обновленный список сотрудников:", employeeList) # вывод в консольный терминал содержимого списка после добавлением нового элемента
print("Обновленная длина списка:", len(employeeList)) # вывод в консольный терминал длины списка после добавлением нового элемента

Результатом работы этого скрипта будет следующий консольный вывод:

Список сотрудников: ['Евгений', 'Екатерина', 'Иван']
Длина списка: 3
Обновленный список сотрудников: ['Евгений', 'Екатерина', 'Иван', 'Александр']
Длина списка: 4

Наглядно видно, после выполнения метода append() в конец списка добавился новый элемент.

Важно понимать, что функция append() добавляет элементы по одному. Например, такая конструкция вызовет ошибку:

employeeList = ["Евгений", "Екатерина", "Иван"]
employeeList.append("Александр", "Денис")

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

employeeList = ["Евгений", "Екатерина", "Иван"]

print("Список сотрудников:", employeeList)
print("Длина списка:", len(employeeList))

employeeList.append(["Александр", "Денис"]) # добавление в список другого списка элементов

print("Обновленный список сотрудников:", employeeList)
print("Обновленная длина списка:", len(employeeList))

Консольный вывод этого скрипта будет таким:

Список сотрудников: ['Евгений', 'Екатерина', 'Иван']
Длина списка: 3
Обновленный список сотрудников: ['Евгений', 'Екатерина', 'Иван', ['Александр', 'Денис']]
Обновленная длина списка: 4

Здесь четко видно, что добавленный в конец список стал новым элементом исходного списка.

Аналогично, можно добавить элемент в пустой список Python:

employeeList = []

employeeList.append("Абсолютный Работник")

print("Список сотрудников:", employeeList)

Консольный вывод будет таким:

Список сотрудников: ['Абсолютный Работник']
cloud

Расширение — extend()

Для того чтобы добавить в список сразу несколько элементов, необходимо воспользоваться функцией extend():

employeeList = ["Евгений", "Екатерина", "Иван"]

print("Список сотрудников:", employeeList)
print("Длина списка:", len(employeeList))

employeeList.extend(["Александр", "Анастасия"]) # добавление в список элементов другого списка
employeeList.extend(("Дед", "Мороз")) # добавление в список элементов кортежа
employeeList.extend("TIMEWEB")  # добавление в список символов строки

print("Обновленный список сотрудников:", employeeList)
print("Обновленная длина списка:", len(employeeList))

Консольный вывод этого примера будет таким:

Список сотрудников: ['Евгений', 'Екатерина', 'Иван']
Длина списка: 3
Обновленный список сотрудников: ['Евгений', 'Екатерина', 'Иван', 'Александр', 'Анастасия', 'Дед', 'Мороз', 'T', 'I', 'M', 'E', 'W', 'E', 'B']
Обновленная длина списка: 14

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

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

employeeList = ["Евгений", "Екатерина", "Иван"]
employeeListNew = ["Александр", "Анастасия"]

employeeList += employeeListNew

print("Обновленный список сотрудников:", employeeList)
print("Обновленная длина списка:", len(employeeList))

Консольный вывод этого скрипта будет таким:

Обновленный список сотрудников: ['Евгений', 'Екатерина', 'Иван', 'Александр', 'Анастасия']
Обновленная длина списка: 5

Либо можно создать новый список, оставив составляющие его списки в исходном состоянии:

employeeList = ["Евгений", "Екатерина", "Иван"]
employeeListNew = ["Александр", "Анастасия"]

employeeListCommon = employeeList + employeeListNew

print("Список сотрудников:", employeeList)
print("Длина списка:", len(employeeList))

print("")

print("Список новых сотрудников:", employeeListNew)
print("Длина списка новых сотрудников:", len(employeeListNew))

print("")

print("Обновленный список сотрудников:", employeeListCommon)
print("Обновленная длина списка:", len(employeeListCommon))

В этом случае консольный вывод будет следующим:

Список сотрудников: ['Евгений', 'Екатерина', 'Иван']
Длина списка: 3

Список новых сотрудников: ['Александр', 'Анастасия']
Длина списка новых сотрудников: 2

Обновленный список сотрудников: ['Евгений', 'Екатерина', 'Иван', 'Александр', 'Анастасия']
Обновленная длина списка: 5

Вставка — insert()

Показанные выше способы добавления элемента (или элементов) в список достаточно специализированы, а значит, и ограничены — все они вставляют новые элементы только в конец исходного списка.

Однако в языке Python есть и более универсальный метод insert(), который позволяет добавить элемент в список по индексу.

Это значит, что этот метод может вставить элемент как в начало списка, так и в конец. А еще в любую другую произвольную позицию. Например, ровно по середине.

В произвольную позицию

Чаще всего необходимо вставить новый элемент в любую произвольную позицию списка. То есть вставка выполняется по индексу с его возможным значением от 0 до длины списка:

employeeList = ["Евгений", "Екатерина", "Александр", "Денис", "Антон", "Иван"]

print("Список сотрудников:", employeeList)
print("Длина списка:", len(employeeList))

employeeList.insert(1, "Петр") # вставляем новый элемент под индексом 1 (в этом случае он станет вторым по счету, а остальные элементы сместятся вперед на одну позицию)

print("Обновленный список сотрудников:", employeeList)
print("Обновленная длина списка:", len(employeeList))

Консольный вывод этого скрипта будет таким:

Список сотрудников: ['Евгений', 'Екатерина', 'Александр', 'Денис', 'Антон', 'Иван']
Длина списка: 6
Обновленный список сотрудников: ['Евгений', 'Петр', 'Екатерина', 'Александр', 'Денис', 'Антон', 'Иван']
Обновленная длина списка: 7

Как можно заметить, вставка нового элемента по индексу приводит к смещению всех последующих элементов на одну позицию вперед. В свою очередь длина списка также увеличивается.

В начало

Этот метод оказывается крайне полезен, когда необходимо добавить элемент в начало списка Python. В этом случае в качестве индекса указывается позиция 0:

employeeList = ["Евгений", "Екатерина", "Александр", "Денис", "Антон", "Иван"]

print("Список сотрудников:", employeeList)

employeeList.insert(0, "Петр") # вставляем новый элемент под индексом 0, то есть в начало списка

print("Обновленный список сотрудников:", employeeList)

Консольный вывод этого скрипта будет уже таким:

Список сотрудников: ['Евгений', 'Екатерина', 'Александр', 'Денис', 'Антон', 'Иван']
Обновленный список сотрудников: ['Петр', 'Евгений', 'Екатерина', 'Александр', 'Денис', 'Антон', 'Иван']

Аналогично, все последующие элементы смещаются на одну позицию вперед, а длина списка увеличивается.

В конец

Метод insert() можно использоваться в качестве альтернативы методу append() для вставки элемента в конец списка. В этом случае в качестве индекса указывается предварительно найденное значение длины списка:

employeeList = ["Евгений", "Екатерина", "Александр", "Денис", "Антон", "Иван"]

print("Список сотрудников:", employeeList)

employeeList.insert(len(employeeList), "Петр") # вставляем новый элемент на позицию последнего индекса

print("Обновленный список сотрудников:", employeeList)

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

Список сотрудников: ['Евгений', 'Екатерина', 'Александр', 'Денис', 'Антон', 'Иван']
Обновленный список сотрудников: ['Евгений', 'Екатерина', 'Александр', 'Денис', 'Антон', 'Иван', 'Петр']

Обратите внимание, что значение длины списка, полученное методом len(), соответствует значению индекса несуществующего элемента, который идет следом за самым последним.

Именно на это место и вставляется новый элемент, становясь последним элементом исходного списка.

В середину

В некоторых задачах необходимо добавить элемент ровно в середину списка — ни до, ни после этой позиции.

Чтобы это сделать, нужно вставить элемент в индекс со значением, равным половине длины списка:

employeeList = ["Евгений", "Екатерина", "Иван", "Анастасия"]

print("Список сотрудников:", employeeList)

# вставляем новый элемент ровно в середину списка
employeeList.insert(int(len(employeeList) / 2), "Александр") # результат деления на 2 необходимо в явном виде преобразовать в переменную типа int

print("Обновленный список сотрудников:", employeeList)

В результате новый элемент окажется посередине списка — до и после него будет одинаковое количество элементов:

Список сотрудников: ['Евгений', 'Екатерина', 'Иван', 'Анастасия']
Обновленный список сотрудников: ['Евгений', 'Екатерина', 'Александр', 'Иван', 'Анастасия']

Тем не менее ситуация, когда в списке четное количество элементов, бывает не всегда:

# нечетное количество элементов
employeeList = ["Евгений", "Екатерина", "Иван", "Анастасия", "Денис"]

print("Список сотрудников:", employeeList)

employeeList.insert(int(len(employeeList) / 2), "Александр") # по прежнему получаем индекс вставки через деление длины списка на 2

print("Обновленный список сотрудников:", employeeList)

Консольный вывод будет таким:

Список сотрудников: ['Евгений', 'Екатерина', 'Иван', 'Анастасия', 'Денис']
Обновленный список сотрудников: ['Евгений', 'Екатерина', 'Александр', 'Иван', 'Анастасия', 'Денис']

В этом примере в списке было 5 элементов, которые были поделены на 2. Результат 2,5 был округлен в меньшую сторону до 2 в момент преобразования типа из float в int. Таким образом, вставляемый элемент окажется перед центральным элементом в середине списка.

Если требуется вставить элемент после центрального элемента, тогда необходимо выполнить округление дробного индекса (полученного делением длины списка на 2) в большую сторону:

import math # подключение библиотеки математики, которая содержит метод округления в большую сторону

# нечетное количество элементов
employeeList = ["Евгений", "Екатерина", "Иван", "Анастасия", "Денис"]

print("Список сотрудников:", employeeList)

employeeList.insert(math.ceil(len(employeeList) / 2), "Александр") # по прежнему получаем индекс вставки через деление длины списка на 2

print("Обновленный список сотрудников:", employeeList)

В этом случае консольный вывод будет уже таким:

Список сотрудников: ['Евгений', 'Екатерина', 'Иван', 'Анастасия', 'Денис']
Обновленный список сотрудников: ['Евгений', 'Екатерина', 'Иван', 'Александр', 'Анастасия', 'Денис']

Добавление нескольких элементов по индексу

В языке Python нет стандартного метода для добавления сразу нескольких элементов на произвольную позицию, будь то начало, конец или середина.

Такой метод придется написать вручную на основе стандартной функции insert():

# функция множественной вставки по индексу
def insertMany(index, listOriginal, listAddition):
	for element in listAddition:
		listOriginal.insert(index, element)
		index += 1

employeeList = ["Евгений", "Екатерина", "Иван", "Анастасия", "Денис"]
employeeListNew = ["Петр", "Ангелина", "Ксения"]

print("Список сотрудников:", employeeList)

insertMany(2, employeeList, employeeListNew)

print("Обновленный список сотрудников:", employeeList)

Результат работы скрипта следующий:

Список сотрудников: ['Евгений', 'Екатерина', 'Иван', 'Анастасия', 'Денис']
Обновленный список сотрудников: ['Евгений', 'Екатерина', 'Петр', 'Ангелина', 'Ксения', 'Иван', 'Анастасия', 'Денис']

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

Язык Python позволяет это сделать:

# импорт специального пространства имен, в котором находятся встроенные типы
import builtins

# обновленный класс list с функцией множественной вставки по индексу
class list2(list):
	def insertMany(self, index, listAddition):
		for element in listAddition:
			self.insert(index, element)
			index += 1

# заменяем в пространстве имен встроенных типов класс list на list2
builtins.list = list2

employeeList = list(["Евгений", "Екатерина", "Иван", "Анастасия", "Денис"]) # новую версию списка необходимо создать с явным указанием типа
employeeListNew = ["Петр", "Ангелина", "Ксения"]

print("Список сотрудников:", employeeList)

employeeList.insertMany(2, employeeListNew) # в методе обновленного класса list (list2) указывается индекс и список вставляемых элементов

print("Обновленный список сотрудников:", employeeList)

Консольный вывод в этом случае будет аналогичным:

Список сотрудников: ['Евгений', 'Екатерина', 'Иван', 'Анастасия', 'Денис']
Обновленный список сотрудников: ['Евгений', 'Екатерина', 'Петр', 'Ангелина', 'Ксения', 'Иван', 'Анастасия', 'Денис']

Таким образом можно добавить в список элементы другого списка на конкретную позицию.

Разверните свой Python-проект в облаке

Заключение

В языке программирования Python добавление в список одного или нескольких элементов можно выполнить с помощью трех базовых функций:

  • append(). Добавляет элемент в конец списка.

  • extend(). Добавляет несколько элементов в конец списка.

  • insert(). Вставляет элемент по конкретному индексу списка.

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

Тем не менее эти методы довольно низкоуровневые. В некоторых случаях требуется более сложная механика добавления элементов. Например, вставка сразу нескольких элементов по определенному индексу списка.

Более подробную информацию о списках и их использовании можно найти в официальной документации Python.

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
24 декабря 2024 г.
30
12 минут чтения
Средний рейтинг статьи: 5
Пока нет комментариев