DevGang
Авторизоваться

Как объединить два списка в Python 

Объединение списков - это процесс создания единого списка из нескольких меньших списков путем их последовательного соединения.

В Python есть много способов объединения списков. В частности, в этой статье мы рассмотрим, как объединить два списка в Python с помощью оператора плюс, оператора распаковки, оператора умножения, цикла foritertools.chain() и extend().

Во всех приведенных ниже фрагментах кода мы будем использовать следующие списки:

list_a = [1, 2, 3, 4]
list_b = [5, 6, 7, 8]

Объединение списка операторов +

Самый простой и понятный способ объединить два списка в Python - это оператор плюс (+):

list_c  = list_a + list_b
print (list_c)

# [1, 2, 3, 4, 5, 6, 7, 8]

Конкатенация списка с помощью распаковки

Этот метод позволяет объединить несколько списков. Это довольно новая функция, доступная только в Python 3.6+. Оператор распаковки, как следует из названия, распаковывает объект iterable на его элементы. Распаковка полезна, когда мы хотим сгенерировать множество аргументов из одного списка. Например:

def foo(a, b, c, d):
    return a + b + c + d

# We want to use the arguments of the following list with the foo function.
# However, foo doesn't take a list, it takes 4 numbers, which is why we need to
# unpack the list.

foo(*list_a)
# This is the same as if we were to call foo(1,2,3,4)
10

Вкратце, мы используем конструктор списка ([a,b..]) и генерируем элементы нового списка по порядку, распаковывая несколько списков один за другим:

list_c  = [*list_a, *list_b, *list_a]
print (list_c)

# [1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4]

Объединение списков операторов умножения

Оператор multiply( *) - это частный случай конкатенации списков в Python. Он используется для многократного повторения всего списка (поэтому он обозначается оператором умножения):

print(list_a * 2)

# [1, 2, 3, 4, 1, 2, 3, 4]

Конкатенация списка в цикле for

В этом методе мы пройдемся по одному списку, добавляя каждый его элемент в другой список один за другим. Когда цикл закончится, у вас будет единый список со всеми желаемыми элементами:

for i in list_b:
    list_a.append(i)

print(list_a)

# [1, 2, 3, 4, 5, 6, 7, 8]

Объединение списков itertools.chain()

Этот метод работает с iterables. Он создает и возвращает итератор, который позже может быть использован для построения связанного списка (представьте его как стрелку, которая просто запоминает порядок элементов в результирующем списке):

# Если бы мы вызывали itertools.chain () вот так
iterator = itertools.chain([1, 2], [3, 4])

# По сути, итератор - это стрелка, которая может дать нам следующий элемент в последовательности, 
# поэтому, если мы вызываем конструктор list() с указанной итерацией, он работает следующим образом:
list(iterator)

# Итератор: следующий элемент в этом списке - 1
[1, 2], [3, 4]
 ^
# Итератор: следующий элемент в этом списке - 2
[1, 2], [3, 4]
    ^
# Итератор: следующий элемент в этом списке - 3
[1, 2], [3, 4]
         ^
# Итератор: следующий элемент в этом списке - 4
[1, 2], [3, 4]
            ^
# Итак, вызов list() выглядит примерно так:
list([1,2,3,4])

# Имейте в виду, что это все псевдокод, Python не дает разработчику прямого контроля над итератором

Для этого метода вам нужно будет импортировать itertools:

import itertools

list_c  = list(itertools.chain(list_a, list_b))
print (list_c)

# [1, 2, 3, 4, 5, 6, 7, 8]

Конкатенация списков с extension()

Это встроенная функция, которую можно использовать для расширения списка. Здесь мы расширяем первый список, добавляя в него элементы второго списка:

list_a.extend(list_b)

print (list_a)

# [1, 2, 3, 4, 5, 6, 7, 8]

Вывод

В этой статье мы рассмотрели пять способов объединения двух списков в Python - с помощью оператора плюс, оператора распаковки, оператора умножения, цикла for, itertools.chain() и extend().

Мы уже писали об объединении в предыдущей статье "Конкатенация двух списков в Python". Эта статья являться более расширенным списком методов конкатенации.

Источник:

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

Поделитесь своим опытом, расскажите о новом инструменте, библиотеке или фреймворке. Для этого не обязательно становится постоянным автором.

Попробовать

Оплатив хостинг 25$ в подарок вы получите 100$ на счет

Получить