Способы слияния списков в Python

0

Способы слияния списков в 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)

Что мы здесь сделали:

  1. Мы объединили списки с помощью оператора +,
  2. Затем мы преобразовали этот список в set для удаления дубликатов
  3. Затем мы преобразовали набор обратно в список

Объединение списков в цикле 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)

то мы сделали здесь в обоих примерах:

  1. Мы прошлись по нашему второму списку, добавив каждый элемент из второго списка к первому списку — первый вариант
  2. Второй вариант — то же самое, но с условием:
  3. Если условие выполнено, то мы добавляем элемент в список.
  4. Если это не так, то элемент пропускается.

Объединение списков с помощью спискового включения (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)

Давайте рассмотрим, что мы здесь сделали:

  1. Оба списка преобразуются в set
  2. Первый набор использует метод .intersection() в который передается набор из второго списка
  3. Окончательный набор возвращается в виде списка

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.