Рубрики
Без рубрики

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

В этом уроке мы рассмотрим несколько способов объединения нескольких списков в Python. Мы рассмотрим оператор plus, оператор multiply, for loop, itertools.chain() и extend().

Автор оригинала: Guest Contributor.

Вступление

Конкатенация списков акт создания одного списка из нескольких меньших списков путем последовательного соединения их вместе.

Существует множество способов объединения списков в Python. В частности, в этой статье мы рассмотрим как объединить два списка в Python с помощью оператора plus, оператора unpack, оператора multiply, manual for loop concatenation, функции itertools.chain() и встроенного метода list extend() .

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

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

Плюс Конкатенация Списка операторов

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

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]
# This is the same as:
# list_c  = [1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4]
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 i in list_b:
    list_a.append(i)
print (list_a)
[1, 2, 3, 4, 5, 6, 7, 8]

Конкатенация списков itertools.chain()

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

# If we were to call itertools.chain() like so
iterator = itertools.chain([1, 2], [3, 4])

# Basically the iterator is an arrow which can give us the next() element in a sequence, so if we call a list() constructor with said iterable, it works like this:
list(iterator)

Под капотом происходит что-то в этом роде:

# Iterator: The next element in this list is 1 
[1, 2], [3, 4]
 ^
# Iterator: The next element in this list is 2
[1, 2], [3, 4]
    ^
# Iterator: The next element in this list is 3 
[1, 2], [3, 4]
         ^
# Iterator: The next element in this list is 4 
[1, 2], [3, 4]
            ^
# So the list() call looks something like:
list([1,2,3,4])

# Keep in mind this is all pseudocode, Python doesn't give the developer direct control over the iterator

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

import itertools

list_c  = list(itertools.chain(list_a, list_b))
print (list_c)
[1, 2, 3, 4, 5, 6, 7, 8]

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

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

list_a.extend(list_b)

print (list_a)
[1, 2, 3, 4, 5, 6, 7, 8]

Вывод

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