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