Python List Extend: Как добавить несколько элементов в список
В этом руководстве вы узнаете, как использовать метод расширения списка в Python, который позволяет добавлять в список сразу несколько элементов. Метод .extend()
в Python очень похож на метод .append()
, но позволяет добавлять в список сразу несколько элементов. Вы научитесь использовать метод расширения в Python для добавления в список одного или нескольких элементов, включая элементы из других списков, кортежей и другого.
К концу этого руководства вы научитесь:
Как работает метод расширения списка Python
Как добавить один или несколько элементов в список с помощью метода расширения
Сравнение этого метода с различными способами добавления элементов в список Python
Сравнение производительности различных методов для больших списков
Оглавление
Понимание метода расширения списка Python
Метод extend()
в Python принимает все элементы другого итерируемого объекта (такого как список, кортеж, строка) и добавляет их в конец списка. Это дает ему ключевое преимущество перед методом .append()
, который может добавить в список только один элемент.
Давайте рассмотрим несколько ключевых особенностей метода .extend()
в Python:
Метод принимает в качестве параметра итерируемый объект, такой как список, кортеж или строка.
Метод изменяет исходный список, но ничего не возвращает.
Давайте изучим синтаксис метода .extend()
для списка в Python:
# Понимание метода list.extend()
list.extend(iterable)
Операция происходит на месте, что означает, что вам не нужно переназначать исходный список сам на себя. Если вы привыкли к необходимости переназначать элементы сами на себя, адаптация к этому может занять некоторое время.
Как добавить несколько элементов в список в Python?
Самый простой способ добавить несколько элементов в список Python - это использовать метод .extend()
, который принимает список элементов и добавляет каждый элемент в список. Операция происходит на месте, поэтому вам не нужно переназначать список.
Теперь, когда вы поняли, как работает метод, давайте рассмотрим пример. Начнем с двух списков и добавим один к другому.
# Добавление нескольких элементов к списку с помощью list.extend()
list1 = [1, 2, 3]
list2 = [4, 5]
list1.extend(list2) # Добавляет элементы списка list2 в конец списка list1
print(list1) # Выводит объединенный список
# Возвращает: [1, 2, 3, 4, 5]
Мы видим, что каждый элемент добавляется последовательно в список, который расширяется. Ниже приведенное изображение немного подробнее разбирает это:

Мы видим, что каждый элемент в списке добавлен в исходном порядке. Как вы узнаете позже, использование метода .extend()
является самым быстрым способом добавить несколько элементов в список.
Расширение Списка Python Одним Элементом
Теперь, когда вы поняли, как работает метод, давайте рассмотрим некоторые его особенности. Когда мы хотим добавить один элемент в наш список с помощью метода .extend()
, нам нужно быть внимательными к тому, как мы это делаем.
Давайте сначала рассмотрим, как добавить одно число к нашему списку:
# Добавление одного элемента к списку с помощью .extend()
list1 = [1, 2, 3]
list1.extend([4]) # Добавляет элемент в виде списка
print(list1)
# Raises: TypeError: 'int' object is not iterable
Это вызывает TypeError
, поскольку метод .extend()
ожидает объект-итерируемый. Чтобы добавить один элемент, нам нужно создать его в виде списка, кортежа или другого объекта итерируемого типа. Давайте посмотрим, как мы можем добавить один элемент в метод .extend()
# Добавление одного элемента к списку с помощью .extend()
list1 = [1, 2, 3]
list1.extend([4]) # Добавляет элемент в виде списка
print(list1)
# Возвращает: [1, 2, 3, 4]
Мы видим, что при передаче списка, содержащего только один элемент, метод работает как ожидается.
Давайте теперь рассмотрим другой пример, где у нас есть список строк. Мы можем попытаться добавить к нему еще одну строку с использованием метода .extend()
# Добавление строки к списку с использованием .extend()
list1 = ['welcome', 'to']
list1.extend('datagy') # Добавляет каждый символ строки в список
print(list1)
# Возвращает:
# ['welcome', 'to', 'd', 'a', 't', 'a', 'g', 'y']
Мы можем видеть, что мы действительно не получили то, что хотели! Хотя метод не вызвал TypeError
, он добавил каждую букву отдельно. Это произошло потому что строка является итерируемым объектом, это означает, что Python интерпретировал наше желание итерировать по строке и добавлять каждую букву по отдельности.
Чтобы добавить строку как единственный элемент, ее необходимо передать в список или другой итерируемый контейнер.
# Добавление строки к списку с использованием .extend()
list1 = ['welcome', 'to']
list1.extend(['datagy']) # Добавляет строку как единственный элемент списка
print(list1)
# Возвращает:
# ['welcome', 'to', 'datagy']
В следующих разделах вы узнаете о различии между методом .extend()
в Python и другими популярными способами добавления элементов в список.
Расширение списка в Python (Extend) по сравнению с Добавлением элемента (Append)
Метод .append() списка в Python также добавляет элемент в конец списка. Однако, он добавляет только один элемент за раз. В то время как метод .extend()
не сработал, когда мы пытались добавить только один элемент, метод .append()
будет работать неожиданно, если мы попытаемся добавить список элементов.
Давайте сравним эти два метода:
# Сравнение методов .extend() и .append() списка
list1_append = [1, 2, 3]
list1_extend = [1, 2, 3]
list2 = [4, 5, 6]
list1_append.append(list2) # Добавляет вложенный список как один элемент
list1_extend.extend(list2) # Добавляет элементы списка в конец
print(f'{list1_append=}') # Выводит результат использования метода .append()
print(f'{list1_extend=}') # Выводит результат использования метода .extend()
# Возвращает:
# list1_append=[1, 2, 3, [4, 5, 6]]
# list1_extend=[1, 2, 3, 4, 5, 6]
Мы видим, что при попытке добавить несколько элементов в список с помощью .append()
, все элементы добавляются как единый список.
Чтобы иметь возможность добавлять каждый элемент отдельно с использованием метода .append()
, нам нужно будет использовать цикл for.
# Добавление нескольких элементов с помощью .append()
list1_append = [1, 2, 3]
list2 = [4, 5, 6]
for item in list2:
list1_append.append(item) # Добавляет каждый элемент списка list2 в конец списка list1_append
print(list1_append)
# Возвращает: [1, 2, 3, 4, 5, 6]
Расширение списка в Python с помощью метода extend в сравнении с оператором сложения (+)
Еще один распространенный способ добавления элементов в конец списка в Python - использование оператора +
. Этот метод объединяет два списка. Поскольку операция происходит не на месте, она создает новый объект, который объединяет два списка.
Давайте посмотрим на пример того, как это работает:
# Добавление элементов в список с помощью оператора +
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1 = list1 + list2 # Объединяет два списка, создавая новый список
# Возвращает: [1, 2, 3, 4, 5, 6]
Мы также можем сократить это, используя оператор увеличенного присваивания следующим образом:
# Использование оператора += для объединения списков
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1 += list2 # Добавляет элементы списка list2 к списку list1
# Возвращает: [1, 2, 3, 4, 5, 6]
В следующем разделе мы рассмотрим производительность этих различных методов.
Сравнение производительности добавления элементов в список в Python
Мы можем измерять время выполнения различных методов, используя Jupyter Notebooks и команду %%timeit
. В таблице ниже представлены различные методы и их время выполнения при попытке конкатенации списка из миллиона элементов:
.extend()
20.4 ms ± 502 µs per loop
.append()
52.5 ms ± 466 µs per loop
+
1min 21s ± 4.19 s per loop
Мы можем видеть, что метод .extend()
является явным лидером, в то время как использование метода .append()
занимает почти первое место. Тем временем, использование метода +
показывает худшие результаты среди всех для больших списков.
Заключение
В этом учебном пособии вы научились использовать метод .extend()
в Python для добавления нескольких элементов в список. Вы узнали, как работает этот метод и как его можно использовать для расширения списков с помощью других итерируемых объектов. Вы узнали о некоторых особенностях использования этого метода, например, при добавлении одиночных элементов в список.
Вы узнали, как метод .extend()
сравнивается с другими способами добавления элементов в конец списка, включая метод .append()
и использование оператора +
. Наконец, мы изучили производительность различных методов, указывая на то, что при работе с большими списками метод .extend()
является явным победителем.
Дополнительные ресурсы
Чтобы узнать больше о связанных темах, ознакомьтесь со следующими статьями ниже:
Списки Python: полный обзор
Python: объединить списки – объединить списки (8 способов)
Как добавлять к спискам в Python — 4 простых метода!
Добавить к списку Python (добавить в начале)
Last updated