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.