Способы слияния списков в Python
Доброго времени суток! В этой статье мы рассмотрим разные способы объединения списков в Python.
Умение работать со списками Python — очень важный навык. Списки в Python являются изменяемыми объектами.
Они также могут содержать повторяющиеся значения, которые по-разному упорядочены.
Итак, перейдем непосредственно к рассмотрению примеров.
Самый простой способ объединить списки Python — это использовать либо распаковку списка, либо простой оператор +.
Давайте сначала рассмотрим использование оператора +, поскольку он намного проще и понятнее:
# способ №1 - оператор +
items1 = ['сайт', 'мой', 'работает', 'нормально']
items2 = ['что', 'такое', 'python']
items3 = items1 + items2
print(items3)
Здесь мы видим, что когда мы распечатываем третий список, он содержит значения из первого и второго.
Аналогично, мы можем создать новый список, распаковав все элементы из списков, которые хотим объединить. Используя
оператор *, мы можем получить доступ ко всем элементам в обоих списках и распаковать их в третий.
Давайте посмотрим, как это будет выглядеть:
# способ №2 - распаковка списков
items1 = ['сайт', 'мой', 'работает', 'нормально']
items2 = ['что', 'такое', 'python']
items3 = [*items1, *items2]
print(items3)
Объединение списков Python с использованием Zip
Функция zip последовательно перебирает несколько элементов, позволяя нам получать доступ к элементам по порядку.
Давайте посмотрим, как мы можем использовать функцию zip() для объединения списков в Python поочередно:
# способ №3 - использование функции zip
items1 = ['сайт', 'мой', 'работает', 'нормально']
items2 = ['что', 'такое', 'python']
items3 = [item for sublist in zip(items1, items2) for item in sublist]
print(items3)
Функция zip() создает объект zip, который технически является объектом генератора. Когда мы превращаем его обратно в список,
мы получаем доступ ко всем элементам в генераторе. Из-за этого мы можем использовать функцию для объединения двух списков
Python в последовательном порядке.
Объединение списков без дубликатов
В Python есть структура данных set, которая в чем-то похожа на список, но не может содержать повторяющихся элементов.
Мы можем использовать set для удаления любых дубликатов из списка, преобразовав список в set.
Давайте посмотрим, как мы можем объединить списки и удалить все в них дубликаты, используя set:
# способ №4 - слияние списков с удалением дубликатов
list1 = [1, 2, 3, 4]
list2 = [4, 5, 6, 7]
list3 = list(set(list1 + list2))
print(list3)
Что мы здесь сделали:
- Мы объединили списки с помощью оператора +,
- Затем мы преобразовали этот список в set для удаления дубликатов
- Затем мы преобразовали набор обратно в список
Объединение списков в цикле For
Хотя это не тот подход, который необходим в большинстве случаев, но он гибче с точки зрения того,
какие элементы включать в итоговый список.
Например, используя цикл for, вы можете пропустить определенные элементы, которые не удовлетворяют определенному
условию.
Пример:
# способ №5 - использование цикла for
list1 = ['сайт', 'мой', 'работает', 'нормально']
list2 = ['что', 'такое', 'python']
# вставка значений из первого списка во второй
for item in list2:
list1.append(item)
print(list1)
# слияние по условию - если длина строки больше трех символов
list1 = ['сайт', 'мой', 'работает', 'нормально']
list2 = ['что', 'такое', 'python']
for item in list2:
if len(item) > 3:
list1.append(item)
print(list1)
то мы сделали здесь в обоих примерах:
- Мы прошлись по нашему второму списку, добавив каждый элемент из второго списка к первому списку — первый вариант
- Второй вариант — то же самое, но с условием:
- Если условие выполнено, то мы добавляем элемент в список.
- Если это не так, то элемент пропускается.
Объединение списков с помощью спискового включения (list comprehension)
Давайте посмотрим, как это выглядит:
# способ №6 - списковое включение (List Comprehension)
list1 = ['сайт', 'мой', 'работает', 'нормально']
list2 = ['что', 'такое', 'python']
[list1.append(item) for item in list2]
print(list1)
Объединение списков по общим элементам
Иногда возникает потребность — объединить только общие элементы между двумя списками Python,
что означает пересечение между двумя списками.
Давайте посмотрим, как объединять списки только с общими элементами:
# способ №7 - слияние списков только по общим элементам
list1 = [1, 2, 3, 4]
list2 = [3, 4, 5, 6]
list3 = list(set(list1).intersection(set(list2)))
print(list3)
Давайте рассмотрим, что мы здесь сделали:
- Оба списка преобразуются в set
- Первый набор использует метод .intersection() в который передается набор из второго списка
- Окончательный набор возвращается в виде списка
Таким образом, из этой статьи мы рассмотрели разные способы объединения списков в Python.