Python: объединение списков или конкатенация

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

Конкатенация – это процесс объединения элементов одной структуры данных. Способы конкатенации списков в Python ниже.

Оператор конкатенации ‘+’

Оператор ‘+’ может использоваться для объединения двух списков. Он добавляет один список в конец другого списка и на их основе создает новый.

Пример:

list1 = [10, 11, 12, 13, 14]
list2 = [20, 30, 42]
res = list1 + list2
print ("Объединённый список:n" + str(res))

Вывод:

Объединённый список:
[10, 11, 12, 13, 14, 20, 30, 42]

Наивный метод для объединения списков

При этом используется цикл for для обхода второго списка. В результате элементы из второго списка добавляются в первый. В нем и сохраняется объединенный список.

Пример:

list1 = [10, 11, 12, 13, 14]
list2 = [20, 30, 42]

print("List1 до конкатенации:n" + str(list1))
for x in list2:
	list1.append(x)
print ("Объединённый список, т.е. list1 после конкатенации:n" + str(list1))

Вывод:

List1 до конкатенации:
[10, 11, 12, 13, 14]
Объединённый список, т.е. list1 после конкатенации:
[10, 11, 12, 13, 14, 20, 30, 42]

List Comprehension

List Comprehension – это альтернативный метод объединения списков. Чаще всего он используется для генерации списка элементов на основе уже существующего. Данный метод использует цикл for для обработки и обхода списка поэлементно.

Пример:

list1 = [10, 11, 12, 13, 14]
list2 = [20, 30, 42]
res = [j for i in [list1, list2] for j in i]
print ("Объединённый список:n"+ str(res))

Вывод:

Объединённый список:
[10, 11, 12, 13, 14, 20, 30, 42]

Метод extend()

Метод extend()можно использовать для объединения двух списков. Он выполняет итерацию и добавляет элементы в исходный список, расширяя его линейно.

Синтаксис:

list.extend(iterable)

Пример:

list1 = [10, 11, 12, 13, 14]
list2 = [20, 30, 42]
print("list1 до конкатенации:n" + str(list1))
list1.extend(list2)
print ("Объединённый список, т.е. list1 после конкатенации:n"+ str(list1))

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

Вывод:

list1 до конкатенации:
[10, 11, 12, 13, 14]
Объединённый список, т.е. list1 после конкатенации:
[10, 11, 12, 13, 14, 20, 30, 42]

Оператор ‘*’

Оператор ‘*’ в Python может быть использован для объединения двух списков. Например, рассмотрим список my_list = [1, 2, 3, 4].

Выражение *my_list заменит ссылку на список его элементами. Таким образом, оно распаковывает элементы списка.

Пример:

list1 = [10, 11, 12, 13, 14]
list2 = [20, 30, 42]
res = [*list1, *list2]
print ("Объединённый список:n" + str(res))

В приведенном выше фрагменте кода выражение res = [*list1, *list2] заменяет list1 и list2 их элементами в указанном порядке. Сначала элементами list1, а затем элементами list2.

Вывод:

Объединённый список:
[10, 11, 12, 13, 14, 20, 30, 42]

Метод itertools.chain()

Метод itertools.chain() из модуля itertools принимает объединяемые элементы в качестве параметров и выдает их последовательность. В результате линейная последовательность не влияет на функционирование метода chain().

Например: выражение itertools.chain([1, 2], [‘John’, ‘Bunny’]) выдаст результат1 2 John Bunny

Пример:

import itertools
list1 = [10, 11, 12, 13, 14]
list2 = [20, 30, 42]
res = list(itertools.chain(list1, list2))
print ("Объединённый список:n" + str(res)) 

Вывод:

Объединённый список:
[10, 11, 12, 13, 14, 20, 30, 42]

Заключение

В этой статье мы рассмотрели различные способы объединения списков Python.

Сергей Бензенкоавтор-переводчик статьи «Ways to Concatenate Lists in Python»